CSS で平均レイアウトを実現するためにネガティブ マージン テクノロジーを使用する方法

CSS で平均レイアウトを実現するためにネガティブ マージン テクノロジーを使用する方法

通常、IE ブラウザでの CSS の互換性の問題を解決するために、フロート レイアウトが使用されます。たとえば、Taobao はフロート レイアウトを使用して実装します。 Taobao ページには、以下に示すようなレイアウトが表示されます。

このように均等に分布した画像のレイアウトを平均レイアウトと呼びます。では、このレイアウトはどのようにして実現されるのでしょうか? 生徒の中には、これは難しくないと考える人もいるかもしれません。親要素 div の幅を子要素の幅の合計と等しくなるように設定するだけです。 本当にそんなに簡単なのでしょうか?試してみましょう。

テスト

各子要素の幅を 100 px に設定し、合計 3 つの子要素があり、各子要素に 50 px の margin-right を指定すると、親要素の幅は 100x3+50x2=400 px になります。スタイルをいくつか設定してみましょう。 html および css コードは次のとおりです。

//HTML
<div class="父クリアフィックス">
   <div class="son"></div>
   <div class="son"></div>
   <div class="son"></div>
</div>
//CSS
* {
  マージン: 0;
  パディング: 0;
  ボックスのサイズ: 境界線ボックス;
}

.clearfix::after {
  コンテンツ: '';
  表示: ブロック;
  クリア: 両方;
}

。父親 {
  幅: 400ピクセル;
  高さ: 100px;
  マージン: 10px;
  背景色: #d5a4cf;
  境界線: 1px 黒一色;
}

.息子{
  境界線: 1px 黒一色;
  背景色: #fff1ac;
  フロート: 左;
  右マージン: 50px;
  幅: 100ピクセル;
  高さ: 100px;
}

効果は以下のとおりです

最後の子要素が押し下げられていることがわかりました。なぜでしょうか?なぜかと聞かないでください。それが CSS だからです。 では、この問題をどう解決したらいいのでしょうか?親要素の 1px の境界線が影響しているという学生もいました。アウトラインに変更してみましょう。

それでもまだ機能しないことがわかりました。どうすればよいでしょうか?次に「ネガティブマージン」という手法を紹介します。 親要素と子要素の間に中間レイヤーを追加し、この div の margin-right を -50px に設定します。もう一度試してみましょう。

//HTML
<div class="父クリアフィックス">
  <div class="middle clearfix">
    <div class="son"></div>
    <div class="son"></div>
    <div class="son"></div>
  </div>
</div>
//CSS
* {
  マージン: 0;
  パディング: 0;
  ボックスのサイズ: 境界線ボックス;
}

.clearfix::after {
  コンテンツ: '';
  表示: ブロック;
  クリア: 両方;
}

。父親 {
  幅: 400ピクセル;
  高さ: 100px;
  マージン: 10px;
  背景色: #d5a4cf;
  アウトライン: 1px 黒
}

.息子{
  境界線: 1px 黒一色;
  背景色: #fff1ac;
  フロート: 左;
  右マージン: 50px;
  幅: 100ピクセル;
  高さ: 100px;
}

。真ん中 {
  右マージン: -50px;
}

このとき、中央の div が右マージンを「拡張」して 3 つの子要素を「ラップ」し、平均的なレイアウトを実現していることがわかりました。

結論は

私たちはテストを通じて、平均的なレイアウトの問題に対する解決策を見つけました。それが皆様のお役に立てば幸いです。 CSS平均レイアウトの詳細については、123WORDPRESS.COMの他の関連記事にも注目してください。

<<:  なぜ Tomcat が起動できないのでしょうか?

>>:  優れたウェブサイトのコピーライティングと優れたユーザーエクスペリエンス

推薦する

Vueは動的コンポーネントを使用してTAB切り替え効果を実現します

目次問題の説明Vueの動的コンポーネントとはアプリケーションシナリオの説明実装手順ステップ 1 (新...

CSS を解析して画像のテーマカラー機能を抽出する (ヒント)

背景すべては、WeChat 技術グループのクラスメートが「写真の主な色を取得する方法はあるか」と尋ね...

テーブル内の要素のドラッグと並べ替えの問題について簡単に説明します

最近、要素テーブルを使用すると、並べ替えの問題によく遭遇します。単純な並べ替えであれば、要素の公式が...

React は antd のアップロード コンポーネントを使用してファイル フォーム送信機能を実装します (完全なコード)

私はプロジェクトを実行するために react を使い始めたばかりで、非常に未熟で完全な初心者です。私...

CSSでスペースを処理する方法

1. 宇宙のルールHTML コード内の空白は通常、ブラウザによって無視されます。 <p>...

スクロールバーがスペースを占有することで発生するバグを修正しました

背景このバグは滾動條占據空間ことで発生していました。いくつかの情報を確認して、ようやく解決しました。...

Web デザイン: Web ミュージックの実装テクニック

<br />Web ページに音楽を挿入する場合、サフィックスに応じて異なるコードを記述す...

MySQL 30軍事ルールの詳細な説明

1. 基本仕様(1)InnoDBストレージエンジンを使用する必要があります。解釈:トランザクション、...

Vueはシンプルなショッピングカートの例を実装します

この記事では、参考までに、シンプルなショッピングカートケースを実装するためのVueの具体的なコードを...

Linuxのバージョン情報を復号化する方法

Linux バージョンに関する情報を表示および解釈するのは、見た目よりも少し複雑です。単純なバージョ...

Vue 円形パーセンテージ プログレスバー コンポーネントの機能の実装

必要な方はどなたでも参考にしてください。試してみて問題が見つかった場合は、メッセージを残してお知らせ...

Docker 経由で Spring Boot アプリケーションを公開およびデプロイするプロセスの分析

目次手動展開1.アイデアを使ってSpring Bootプロジェクトを作成する2. プロジェクトをJa...

CentOS 7 での mysql 5.7 のインストール チュートリアル

1. 公式MySQL Yumリポジトリをダウンロードしてインストールする 実行ファイル: mysql...

Dockerがコンテナを起動するたびに、IPとホストが指定した操作が実行されます。

序文Dockerを使ってHadoopクラスタを起動するたびに、ネットワークカードの再バインド、IPの...

Nginx リバース プロキシ構成の完全なプロセス記録

1. 準備LinuxシステムにTomcatをインストールし、デフォルトのポート8080を使用してTo...