⊗mkPmLtTCS 245 of 250 menu

CSSにおける2カラムレイアウトの構成

次のような2カラムレイアウトを作成してみましょう:

まずはページの基本構造を作成します:

<div id="wrapper"> <div id="header"> header </div> <div id="container"> <div id="content"> content </div> <div id="sidebar"> sidebar </div> </div> <div id="footer"> footer </div> </div>

次に、ラッパーにスタイルを適用して画面中央に配置します:

#wrapper { width: 1000px; margin: 30px auto; border: 1px solid black; }

次に、ヘッダーとフッターのスタイルを設定します:

#header { height: 200px; border: 1px solid black; } #footer { height: 200px; border: 1px solid black; }

ご覧の通り、ヘッダーとフッターに高さを設定しています。 これは、このレイアウトではコンテンツがないためです。 コンテンツがある場合は、高さを設定すべきではありません - 高さはコンテンツによって形成されます。

また、幅を設定していない点にも注意してください。 ヘッダーとフッターはブロック要素であるため、 幅は自動的にラッパーの幅と同じになります。

次に、テキストが境界に接しないように paddingを設定しましょう:

#header { height: 200px; padding: 20px; border: 1px solid black; } #footer { height: 200px; padding: 20px; border: 1px solid black; }

しかし、paddingがあると、ブロックのサイズに悪影響を及ぼします - 指定したサイズよりも大きくなってしまいます。 すべてのブロックの動作を変更して、paddingと境界線が ブロックを拡張しないようにしましょう:

* { box-sizing: border-box; }

次に、コンテンツとサイドバーを同じ行に配置する必要があります。 フレックスボックスを使用して実現しましょう:

#container { display: flex; }

コンテンツとサイドバーに幅を指定します。 この時、それらの幅の合計はラッパーの幅と等しくなければなりません:

#content { width: 800px; } #sidebar { width: 200px; }

サイドバーとコンテンツの間に余白を作りたいとします。 この場合、サイドバーにmarginを設定する必要があります。 そのためには、誰かからこのmargin用の幅を削る必要があります。 コンテンツから削り、それに応じてコンテンツの幅を減らしましょう:

#content { width: 780px; } #sidebar { width: 200px; margin-right: 20px; }

次に、要素にコンテンツがないため、高さを追加しましょう。 一つの要素に高さを追加するだけで十分です。 なぜなら、もう一方のフレックス要素は高さに合わせて調整されるからです(なぜでしょう?)。 コンテンツに高さを設定しましょう:

#content { width: 780px; height: 700px; } #sidebar { width: 200px; margin-right: 20px; }

コンテンツとサイドバーに残りのスタイルを追加しましょう:

#content { width: 780px; height: 700px; padding: 20px; border: 1px solid black; } #sidebar { width: 200px; margin-right: 20px; padding: 20px; border: 1px solid black; }

以上で、レイアウトは完成です。すべてのコードをまとめましょう:

<div id="wrapper"> <div id="header"> header </div> <div id="container"> <div id="sidebar"> sidebar </div> <div id="content"> content </div> </div> <div id="footer"> footer </div> </div> * { box-sizing: border-box; } #wrapper { width: 1000px; margin: 30px auto; border: 1px solid black; } #header { height: 200px; padding: 20px; border: 1px solid black; } #container { display: flex; } #content { width: 780px; height: 700px; padding: 20px; border: 1px solid black; } #sidebar { width: 200px; margin-right: 20px; padding: 20px; border: 1px solid black; } #footer { height: 200px; padding: 20px; border: 1px solid black; }
日本語
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItalianoქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
当サイトでは、サイトの動作、分析、パーソナライゼーションのためにクッキーを使用しています。 データ処理はプライバシーポリシーに従って行われます。
すべて受け入れる 設定 拒否