1. 2 列レイアウトとは何ですか?2 列レイアウトには、左側が固定幅で右側が適応幅のレイアウトと、両方の列が適応型 (つまり、左側の幅は子要素によって決定され、残りのスペースは右側に埋められる) の 2 種類があります。 CSS面接でもよく聞かれる質問であり、フロントエンド開発エンジニアなら習得しておきたいスキルです。以下で実装方法を紹介します。 2. 左側の固定幅と右側の適応幅を実現するにはどうすればよいですか?1. 二重インラインブロック原則: 両方の要素を dislpay:inline-block に設定します。HTML スペースの影響を排除するために、親要素の font-size を 0 に設定し、右側の適応要素の幅を calc 関数を使用して計算する必要があります。 2 つの要素の高さが異なる場合は、vertical-align: top を設定して調整できます。 デメリット: 親要素のフォントサイズが0に設定されているため、子要素のテキストは表示されません。 <!DOCTYPE html> <html> <ヘッド> <メタ文字セット="utf-8"> <タイトル></タイトル> <スタイル> *{ パディング: 0; マージン: 0; } 。箱{ 高さ: 600px; 幅: 100%; フォントサイズ:0; } 。左{ 表示: インラインブロック; 幅: 100ピクセル; 高さ: 200px; 背景色: 赤; 垂直方向の位置合わせ: 上; } 。右{ 表示: インラインブロック; 幅: calc(100% - 100px); 高さ: 400px; 背景色: 青; 垂直方向の位置合わせ: 上; } </スタイル> </head> <本文> <div> <div> <span>1234</span> </div> <div> <span>1234</span> </div> </div> </本文> </html> 2. ダブルフローティング原則:2つの要素をフロートに設定し、右側の適応要素の幅をcalc関数を使用して計算します。 デメリット: 親要素のフロートをクリアする必要がある <!DOCTYPE html> <html> <ヘッド> <メタ文字セット="utf-8"> <タイトル></タイトル> <スタイル> *{ パディング: 0; マージン: 0; } 。箱{ 高さ: 600px; 幅: 100%; } 。左{ フロート: 左; 幅: 100ピクセル; 高さ: 200px; 背景色: 赤; } 。右{ フロート: 左; 幅: calc(100% - 100px); 高さ: 400px; 背景色: 青; } </スタイル> </head> <本文> <div> <div> <span> 123だだだだだだだだだだだだだだだだだだだ </span> </div> <div></div> </div> </本文> </html> 原則: 左側の固定幅要素はフロートし、右側の適応型要素は margin-left 値を固定幅要素の幅よりも大きく設定します。 デメリット: 親要素のフロートをクリアする必要がある <!DOCTYPE html> <html> <ヘッド> <メタ文字セット="utf-8"> <タイトル></タイトル> <スタイル> *{ パディング: 0; マージン: 0; } 。箱{ 高さ: 600px; 幅: 100%; } 。左{ フロート: 左; 幅: 100ピクセル; 高さ: 200px; 背景色: 赤; } 。右{ 左マージン: 100px; 高さ: 400px; 背景色: 青; } </スタイル> </head> <本文> <div> <div> <p>1234</p> </div> <div> <p>1234</p> </div> </div> </本文> </html> 4. フローティング + BFC原則: 親要素にoverflow:hiddenを設定し、左側の固定幅要素をフロートし、右側のアダプティブ要素にoverflow:autoを設定してBFCを作成します。 デメリット: 左の要素のコンテンツが設定された幅を超えると、右の要素と重なってしまいます。 <!DOCTYPE html> <html> <ヘッド> <メタ文字セット="utf-8"> <タイトル></タイトル> <スタイル> *{ パディング: 0; マージン: 0; } 。箱{ 高さ: 600ピクセル; 幅: 100%; オーバーフロー: 非表示; } 。左{ フロート: 左; 幅: 100ピクセル; 高さ: 200px; 背景色: 赤; } 。右{ オーバーフロー:自動; 高さ: 400px; 背景色: 青; } </スタイル> </head> <本文> <div> <div>111111111111111111111111</div> <div>111111111111111111111111111111111111111111111</div> </div> <div></div> </本文> </html> 5.絶対+左余白原則:親要素は相対的に配置され、左側の要素は絶対的に配置され、右側の適応要素の margin-left の値は固定幅要素の幅よりも大きくなるように設定されます。 デメリット: 親要素が相対配置に設定されている <!DOCTYPE html> <html> <ヘッド> <メタ文字セット="utf-8"> <タイトル></タイトル> <スタイル> *{ パディング: 0; マージン: 0; } 。箱{ 高さ: 600px; 幅: 100%; 位置: 相対的; } 。左{ 位置: 絶対; 幅: 100ピクセル; 高さ: 200px; 背景色: 赤; } 。右{ 左マージン: 100px; 高さ: 400px; 背景色: 青; } </スタイル> </head> <本文> <div> <div></div> <div></div> </div> </本文> </html> 6.フレックスレイアウト原則: 親要素はdisplay: flexを設定し、アダプティブ要素はflex: 1を設定します。 デメリット: 互換性の問題があり、IE10以下ではサポートされていません <!DOCTYPE html> <html> <ヘッド> <メタ文字セット="utf-8"> <タイトル></タイトル> <スタイル> *{ パディング: 0; マージン: 0; } 。箱{ 高さ: 600px; 幅: 100%; ディスプレイ: フレックス; } 。左{ 幅: 100ピクセル; 高さ: 200px; 背景色: 赤; } 。右{ フレックス: 1; 高さ: 400px; 背景色: 青; } </スタイル> </head> <本文> <div> <div></div> <div></div> </div> </本文> </html> 3. 両側の要素は適応的である厳密に言えば、どちらの要素も適応的ではありませんが、上記の固定幅は子要素によって拡張されるように変更されます。 1. フローティング + BFC原理は上記と同じですが、左の要素の幅は設定されず、子要素によって拡張される点が異なります。 2. テーブルレイアウト原則: 親要素は display:table で、左の要素は div で囲まれています。div は display:table-cell と width:0.1% (最小幅を確保するため) に設定されています。左の要素内に margin-right が設定され、右の要素に display:table-cell が設定されています。 デメリット: IE7 以下ではサポートされていません。display:table を使用すると、padding が無効になり、親要素の line-height プロパティが無効になり、display:table-cell を使用すると margin が無効になります。 <!DOCTYPE html> <html> <ヘッド> <メタ文字セット="utf-8"> <タイトル></タイトル> <スタイル> 。親{ 表示: テーブル; 幅: 100%; } 。箱{ 表示: テーブルセル; 幅: 0.1%; } 。左{ 右マージン: 20px; 背景色: 赤; 高さ: 200px; } 。右{ 表示: テーブルセル; 背景色: 青; 高さ: 300px; } </スタイル> </head> <本文> <div> <div> <div>126545453dddddddd453453453</div> </div> <div>12121</div> </div> </本文> </html> 3.フレックスレイアウト原理と欠点は上記のフレックスレイアウトと同じです。 4. グリッドレイアウト原則: 親要素は display: grid、grid-template-columns: auto 1fr; を設定します (この属性は列の幅を定義します。auto キーワードは、ブラウザーが長さを独自に決定することを意味します。fr は相対的なサイズ単位で、残りのスペースが均等に分割されることを示します) grid-gap: 20px (行間隔) デメリット: 互換性が低い、IE11 はサポートしていない、Google 57 以上のみサポート可能 <!DOCTYPE html> <html> <ヘッド> <メタ文字セット="utf-8"> <タイトル></タイトル> <スタイル> 。親{ 表示:グリッド; グリッドテンプレート列:自動 1fr; グリッドギャップ:20px } 。左{ 背景色: 赤; 高さ: 200px; } 。右{ 高さ:300px; 背景色: 青; } </スタイル> </head> <本文> <div> <div>111111111111111111111111</div> <div></div> </div> </本文> </html> CSS で 2 列レイアウトを実現する N の方法についての記事はこれで終わりです。CSS 2 列レイアウトに関するより関連性の高いコンテンツについては、123WORDPRESS.COM の過去の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 |
<<: HTML+CSS+JSはナビゲーションバーのスクロールグラデーション効果を実現します
>>: HTML と JavaScript を使用してローカル メディア (ビデオとオーディオ) ファイルを再生する方法
目次序文1. MySQLはSSL構成を有効にする1.1 SSLが有効になっているかどうかを確認する1...
HTMLでは、中国語のフレーズ「學好好學」は「學好好學」と表現できます。プロジェクトでは、SMSアラ...
この物語は、今日の予期せぬ発見から始まります。同社には複数のウェブサイトがある。友達リンクにはお互い...
このノートでは、 MySQL の B+Tree インデックスとは何ですか?クラスター化インデックスは...
目次背景関数目的アイデアの源成し遂げるセット得るプロパティの削除拡張機能を禁止するもっている要約する...
Promise は、ES6 で導入された非同期プログラミングのための新しいソリューションです。 Pr...
フロントエンド Web エンジニアとして、ページ効果を作成するときに次の現象に遭遇したことがあるはず...
Nginx の主な設定ファイルは nginx.conf で、グローバル ブロック、イベント ブロック...
目次JavaScript 改ざん防止オブジェクト1. 拡張不可能なオブジェクト2. 封印された物体3...
この記事では、トークンログイン認証を実装するためのVUEの具体的なコードを例として紹介します。具体的...
目次1. Promise とは何ですか? 2. なぜ Promise が存在するのでしょうか? 3つ...
CSS3を使用して、Googleログインページと同様の入力ボックスをアニメーション化します。効果1 ...
区切り文字なしの文字列抽出質問の要件データベース内のフィールド値:実装効果: 1行のデータを複数行に...
はじめに: すべてのブラウザには、「ユーザー エージェント スタイル シート」と呼ばれる、すべてのペ...
導入圧縮トランスポート プロトコル、圧縮列ソリューション、圧縮テーブル ソリューションなど、MySQ...