CSS レイアウトやその他の実装における負のマージンの魔法のような使い方
プロジェクトの開発中に、X (X>1) 個のブロックを 1 行に配置し、隣接するブロック間の間隔を同じにする必要があるというニーズに誰もが遭遇したことがあると思います。
おそらく上記のようになります。実装する方法はいくつかあります。
1. 負のマージン方法
要素の幅とマージンを親の幅を満たすように設定し、親のマージン左を負のマージンの幅に設定します
CSS コードコンテンツをクリップボードにコピーします
<style type="text/css"> *{ margin: 0; padding: 0; } img{ vertical-align: middle; } ul>li{ float: left; } ul>li>img{ width: 100%; } .test1{ padding: 0 2%; margin-left: -3.3%; } .test1>li{ width: 30%; margin-left: 3.3%; } </style> <p>1.关于负margin的实现,由于margin是基于父级计算的,会有一定的偏差,但是用于移动端上,误差可以忽略不计</p> <ul class="test1 clearfix"> <li><img src="/static/imghw/default1.png" data-src="img/test.jpg" class="lazy" / alt="CSS レイアウトやその他の実装における負のマージンの魔法のような使い方" ></li> <li><img src="/static/imghw/default1.png" data-src="img/test.jpg" class="lazy" / alt="CSS レイアウトやその他の実装における負のマージンの魔法のような使い方" ></li> <li><img src="/static/imghw/default1.png" data-src="img/test.jpg" class="lazy" / alt="CSS レイアウトやその他の実装における負のマージンの魔法のような使い方" ></li> </ul>
上記のエラーは、異なる要素に基づいて ul のマージン パーセンテージと li のマージン パーセンテージを計算することによって発生します。ただし、その範囲が限られているためです。モバイル端末のウィンドウでは、この差は非常にわずかであり、PC では一般的に px が使用されるため、無視しても問題ありません。 (以下にその他の方法があります)
2. ボックス サイズを使用して要素内を埋める主要な Web サイトの実装には、
CSS コード コンテンツをクリップボードにコピーすることが必要です。
<style type="text/css"> *{ margin: 0; padding: 0; } img{ vertical-align: middle; } .test1{ padding: 0 2%; margin-left: -3.3%; } ul>li{ float: left; } .test1>li{ width: 30%; margin-left: 3.3%; } ul>li>img{ width: 100%; } .test2>li{ width: 33.3%; padding: 0 2%; box-sizing: border-box; } .test3{ display: flex; justify-content: space-between; } .test3>li{ width: 31.3%; padding: 0 2%; float: none; } .test4{ width: 1200px; border: 1px solid red; margin-left: -3.33%; } .test4>li{ width: 30%; margin-left: 3.33%; } </style> <p>2.各大网站的实现,在元素内部进行填充,使用box-sizing,需要ie8及以上才支持</p> <ul class="test2 clearfix"> <li><img src="/static/imghw/default1.png" data-src="img/test.jpg" class="lazy" / alt="CSS レイアウトやその他の実装における負のマージンの魔法のような使い方" ></li> <li><img src="/static/imghw/default1.png" data-src="img/test.jpg" class="lazy" / alt="CSS レイアウトやその他の実装における負のマージンの魔法のような使い方" ></li> <li><img src="/static/imghw/default1.png" data-src="img/test.jpg" class="lazy" / alt="CSS レイアウトやその他の実装における負のマージンの魔法のような使い方" ></li> </ul>
この実装にはまだ欠点は見つかっておらず、コードはシンプルで理解しやすいです(推奨)
3. フレキシブルボックスモデルフレックスの実装には互換性処理が必要です(古いボックス+新しいボックス) box)
CSS コードコンテンツをクリップボードにコピーします
<style type="text/css"> *{ margin: 0; padding: 0; } img{ vertical-align: middle; } .test1{ padding: 0 2%; margin-left: -3.3%; } ul>li{ float: left; } .test1>li{ width: 30%; margin-left: 3.3%; } ul>li>img{ width: 100%; } .test2>li{ width: 33.3%; padding: 0 2%; box-sizing: border-box; } .test3{ display: flex; justify-content: space-between; } .test3>li{ width: 31.3%; padding: 0 2%; float: none; } .test4{ width: 1200px; border: 1px solid red; margin-left: -3.33%; } .test4>li{ width: 30%; margin-left: 3.33%; } </style> <p>3.弹性盒模型flex的实现,需要做兼容处理(旧盒子+新盒子),仅为演示,没做兼容处理</p> <ul class="test3"> <li><img src="/static/imghw/default1.png" data-src="img/test.jpg" class="lazy" / alt="CSS レイアウトやその他の実装における負のマージンの魔法のような使い方" ></li> <li><img src="/static/imghw/default1.png" data-src="img/test.jpg" class="lazy" / alt="CSS レイアウトやその他の実装における負のマージンの魔法のような使い方" ></li> <li><img src="/static/imghw/default1.png" data-src="img/test.jpg" class="lazy" / alt="CSS レイアウトやその他の実装における負のマージンの魔法のような使い方" ></li> </ul>
この状況でフレックスを使用せずにどうすればよいでしょうか? フレックス ボックス モデルは、この状況を処理できるように特別に設計されている必要がありますが、各ブラウザは、新しいボックス モデルと古いボックス モデルを異なる方法で実装します。したがって、一般に、ボックス モデルの両方のセットの属性を追加する必要があります。 (投げたい人はやるだけで効果は絶大です)
4.classnameの実装
特別な処理が必要な要素には別のクラスを追加し、それに応じて処理します。バックエンドまたはフロントエンドで処理できます (バックエンド処理が推奨されます)
CSS コードコンテンツをクリップボードにコピーします
<style type="text/css"> *{ margin: 0; padding: 0; } img{ vertical-align: middle; } .test1{ padding: 0 2%; margin-left: -3.3%; } ul>li{ float: left; } .test1>li{ width: 30%; margin-left: 3.3%; } ul>li>img{ width: 100%; } .test2>li{ width: 33.3%; padding: 0 2%; box-sizing: border-box; } .test3{ display: flex; justify-content: space-between; } .test3>li{ width: 31.3%; padding: 0 2%; float: none; } .test4{ padding: 0 2%; } .test4>li{ width: 30%; margin-left: 5%; } .test4>li.first{ margin: 0; } .test5{ padding: 0 2%; } .test5>li{ width: 30%; margin-left: 5%; } .test5>li:first-child{ margin: 0; } </style> <p>4.classname实现</p> <ul class="test4 clearfix"> <li class="first"><img src="/static/imghw/default1.png" data-src="img/test.jpg" class="lazy" / alt="CSS レイアウトやその他の実装における負のマージンの魔法のような使い方" ></li> <li><img src="/static/imghw/default1.png" data-src="img/test.jpg" class="lazy" / alt="CSS レイアウトやその他の実装における負のマージンの魔法のような使い方" ></li> <li><img src="/static/imghw/default1.png" data-src="img/test.jpg" class="lazy" / alt="CSS レイアウトやその他の実装における負のマージンの魔法のような使い方" ></li> </ul>
5.css セレクターの実装
:first- child :first -type-of :nth-child() これらの実装には技術的な問題はありません。CSS ドキュメントを確認して、CSS コードをクリップボードにコピーしてください
<style type="text/css"> *{ margin: 0; padding: 0; } img{ vertical-align: middle; } .test1{ padding: 0 2%; margin-left: -3.3%; } ul>li{ float: left; } .test1>li{ width: 30%; margin-left: 3.3%; } ul>li>img{ width: 100%; } .test2>li{ width: 33.3%; padding: 0 2%; box-sizing: border-box; } .test3{ display: flex; justify-content: space-between; } .test3>li{ width: 31.3%; padding: 0 2%; float: none; } .test4{ padding: 0 2%; } .test4>li{ width: 30%; margin-left: 5%; } .test4>li.first{ margin: 0; } .test5{ padding: 0 2%; } .test5>li{ width: 30%; margin-left: 5%; } .test5>li:first-child{ margin: 0; } </style> <p>5.css选择器实现(注意ie兼容性)</p> <ul class="test5 clearfix"> <li><img src="/static/imghw/default1.png" data-src="img/test.jpg" class="lazy" / alt="CSS レイアウトやその他の実装における負のマージンの魔法のような使い方" ></li> <li><img src="/static/imghw/default1.png" data-src="img/test.jpg" class="lazy" / alt="CSS レイアウトやその他の実装における負のマージンの魔法のような使い方" ></li> <li><img src="/static/imghw/default1.png" data-src="img/test.jpg" class="lazy" / alt="CSS レイアウトやその他の実装における負のマージンの魔法のような使い方" ></li> </ul>
。
すべてのデモを投稿しました X=2、幅を設定、左側で左フロート、右側で右フロートの場合に別の状況があることをほとんど忘れていました。 実際、X=3 の場合、これに対処する別の方法があります。左要素と右要素はそれぞれ左と右にフロートし、中央の要素は親を基準にして絶対位置および中央に設定されます。
不可分であるため、ボックスサイジングのように完全に計算することはできませんが、プロジェクトに合理的に適用することは問題ありません。
以上がこの記事の全内容です。皆さんの学習に役立つことを願っています。また、皆さんも PHP 中国語 Web サイトをサポートしていただければ幸いです。
CSS レイアウトの負のマージンに関するその他の記事やその他の実装関連の記事については、PHP 中国語 Web サイトに注目してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック

ブートストラップリストのデフォルトスタイルは、CSSオーバーライドで削除できます。より具体的なCSSルールとセレクターを使用し、「近接原理」と「重量原理」に従って、ブートストラップのデフォルトスタイルをオーバーライドします。スタイルの競合を避けるために、よりターゲットを絞ったセレクターを使用できます。オーバーライドが失敗した場合は、カスタムCSSの重量を調整します。同時に、パフォーマンスの最適化に注意を払い、重要な!の過剰使用を避け、簡潔で効率的なCSSコードを書いてください。

ブートストラップボタンの使用方法は?ブートストラップCSSを導入してボタン要素を作成し、ブートストラップボタンクラスを追加してボタンテキストを追加します

ファイルアップロード機能は、Bootstrapを介して実装できます。手順は次のとおりです。BootstrapCSSおよびJavaScriptファイルを紹介します。ファイル入力フィールドを作成します。ファイルアップロードボタンを作成します。ファイルのアップロードを処理します(FormDataを使用してデータを収集し、サーバーに送信します)。カスタムスタイル(オプション)。

ブートストラップに画像を挿入する方法はいくつかあります。HTMLIMGタグを使用して、画像を直接挿入します。ブートストラップ画像コンポーネントを使用すると、レスポンシブ画像とより多くのスタイルを提供できます。画像サイズを設定し、IMG-Fluidクラスを使用して画像を適応可能にします。 IMGボーダークラスを使用して、境界線を設定します。丸い角を設定し、IMGラウンドクラスを使用します。影を設定し、影のクラスを使用します。 CSSスタイルを使用して、画像をサイズ変更して配置します。背景画像を使用して、背景イメージCSSプロパティを使用します。

ブートストラップリストのサイズは、リスト自体ではなく、リストを含むコンテナのサイズに依存します。 BootstrapのグリッドシステムまたはFlexBoxを使用すると、コンテナのサイズを制御することで、リスト項目を間接的に変更します。

Bootstrapを使用してWebサイトをレイアウトするには、グリッドシステムを使用してページをコンテナ、行、列に分割する必要があります。最初にコンテナを追加し、その中の行を追加し、行内の列を追加し、最後に列にコンテンツを追加します。ブートストラップのレスポンシブレイアウト関数は、ブレークポイント(XS、SM、MD、LG、XL)に従ってレイアウトを自動的に調整します。レスポンシブクラスを使用することで、異なる画面サイズの下の異なるレイアウトを実現できます。

ブートストラップのネストされたリストでは、スタイルを制御するためにブートストラップのグリッドシステムを使用する必要があります。まず、外層&lt; ul&gt;を使用します。および&lt; li&gt;リストを作成するには、内側のレイヤーリストを&lt; div class =&quot; row&gt;に巻き付けます。 and&lt; div class =&quot; col-md-6&quot;&gt;内側のレイヤーリストに、内側の層リストが行の幅の半分を占めることを指定します。このように、内側のリストは正しいものを持つことができます
