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 が起動できないのでしょうか?

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

推薦する

docker cp ファイルをコピーしてコンテナに入る

実行中のコンテナに入る # コンテナに入り、新しいターミナルを開きます# docker exec -...

キャッシュサーバーを構築するためのMemcached方式

序文多くの Web アプリケーションは、リレーショナル データベース管理システム (RDBMS) に...

CSS レイアウト チュートリアル: 垂直方向の中央揃えを実現する方法

序文最近、フロントエンドの知識をまとめており、いくつかのインタビューにも参加しました。インタビュー中...

Excelアップロード機能を実現するVue + iViewの完全コード

1. HTML部分 <Col span="2">ファイルをアップロー...

フロントエンドインタビューに必要なホモロジーとクロスドメインの詳細な説明

序文ご存知のとおり、ブラウザの相同性戦略とクロスドメイン方式も、フロントエンド面接で頻繁に遭遇する問...

HTMLファイルとは何ですか?HTMLファイルを開く方法

HTML は Hypertext Markup Language の略です。現在、ほとんどの Web...

CSS 変数に基づくテーマ切り替えに最適なソリューション (推奨)

この要件を受け取ったとき、Baidu は、CSS リンクの置き換え、className の変更、le...

データバインディングとリストデータの表示にはVue3を使用する

目次1. Vue2との比較1. Vue3の新機能2. Vue2とVue3の応答原理の比較3. 配列の...

1 つの記事で Vuex を理解する

目次概要Vuex の 4 つの主要オブジェクト状態の使用突然変異の使用ゲッターの使用アクションの使用...

MySQL 8.0.15 のインストールと設定のグラフィックチュートリアル

この記事ではMySQL 8.0.15のインストールと設定方法を参考までに記録します。具体的な内容は以...

docker run -v はデータボリュームを異常にマウントし、コンテナのステータスは常に再起動になります。

問題点: docker run に -v パラメータを追加すると、コンテナは常に再起動状態になります...

MySQL データ ウェアハウスを保護するための 5 つのヒント

さまざまなソースからデータを集約することで、中央倉庫を作成できます。データ ウェアハウスは、ビジネス...

html+css3で実装されたログインインターフェース

成果を達成するまずHTMLを使って基本的なフレームワークを構築します <本文> <...

MySQL8の再帰メソッドの使い方を教える

以前、カスタム関数を使用して MySQL でツリー構造を再帰的にクエリする方法についての記事を書きま...