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コンポーネントライブラリElementUIはテーブルリストのページング効果を実現します

ElementUIはテーブルリストのページング効果のチュートリアルを実装しています。参考までに。具体...

MySQL インデックス失敗の原理

目次1. インデックス失敗の理由2. インデックスの秩序が崩れる状況を見てみましょう。 - インデッ...

JavaScript エラー処理 try..catch...finally + は throw+TypeError+RangeError をカバーします

目次1. 目的2. 文法3. 練習する1. 目的通常、エラーが発生すると、スクリプトは直ちに停止し、...

Mysql5.7 のルートパスワードを忘れた場合の対処法 (シンプルで効果的な方法)

前回の記事では、MySQL 5.7でルートパスワードを忘れた場合と、MySQL 5.7でルートパスワ...

VUE のコンパイル スコープとスロット スコープのスロットの問題について

スロットとは何ですか?スロット ディレクティブは v-slot であり、現在 slot と slot...

W3C チュートリアル (13): W3C WSDL アクティビティ

Web サービスは、アプリケーション間の通信に関係します。 WSDL は、XML ベースの Web ...

DockerはMysql、.Net6、Sqlserverなどのコンテナをデプロイします

目次CentOS 8にDockerをインストールする1. yumを更新する2. containerd...

MySQL クラスター化インデックスのページ分割原理の分析例

この記事では、MySQL クラスター化インデックスのページ分割を例を使って説明します。ご参考までに、...

Vueはタブ切り替えを実装します

この記事では、タブ切り替えを実装するためのVueの具体的なコードを例として紹介します。具体的な内容は...

MySQL ステートメントコメントの紹介

MySQL は次の 3 種類のコメントをサポートしています。 1. 行末の「#」文字から。 2. 「...

Vueでクラススタイルを使用する方法の詳細

目次1. ブール2. 表現3. マルチクラスパッケージ4. v-bind でクラス class を直...

フレックスレイアウトでコンテナ内のコンテンツを維持するためのソリューションの詳細な説明

モバイル側では、フレックスレイアウトが非常に便利です。デバイスの幅に応じてコンテナの幅を自動的に調整...

Vite と Vue CLI の長所と短所

Vue エコシステムには Vite と呼ばれる新しいビルド ツールがあり、Vue CLI よりも 1...

JavaScript Canvas は動的なワイヤーフレーム効果を描画します

この記事では、JavaScript Canvasの動的なワイヤーフレーム効果を描画する具体的なコード...

nginx をベースにした Web クラスター プロジェクトをすばやく構築する方法を説明します。

目次1. プロジェクト環境2. プロジェクトの説明3. プロジェクトの手順1. インストール2. 構...