ホームページ  >  記事  >  ウェブフロントエンド  >  CSS3 フレックス レイアウトの概要 application_html/css_WEB-ITnose

CSS3 フレックス レイアウトの概要 application_html/css_WEB-ITnose

WBOY
WBOYオリジナル
2016-06-21 08:45:511630ブラウズ

前回の記事では flex ボックスの構文を紹介しましたが、この記事では flex を使って実際にレイアウトしていきます。たとえば、アダプティブな 3 列の等高レイアウトを実装するには、% パーセンテージを指定した inline-block または float を使用していました。ただし、マージン/パディングの計算はより複雑で、加算、減算、および維持が面倒です。フレックス ボックス モデルを使用する方がはるかに簡単です。

最初に、左右のサイドバーに 220 ピクセルの固定幅で元の HTML 構造を作成します

* { margin: 0; padding: 0; }#header, #footer { width: 100%; }#left, #right { width: 220px; }<div id="header">header</div><div id="page">    <div id="main">main</div>    <div id="left">left</div>    <div id="right">right</div></div><div id="footer">footer</div>

次にコンテンツを追加しますコンテナ (#page) フレックス ボックス モデルに設定します: #page { display: flex; }

真ん中の main は単なる div なので、 width は適応的ではないようですが、非常に単純です #main { flex: auto; を設定するだけです。 2つのサイドバーがflexで設定されていないため、残りの幅はmain専用になります

mainの位置を調整するのは非常に簡単です。 #main { … order: } を設定するだけで十分です。もちろん、同時に #right { … order: } を right に設定することを忘れないでください。 Left は設定されておらず、デフォルトは 0 です。

DOM 内で left->main->right をソートするだけで十分ではないのかと疑問に思われるかもしれません。なぜ main に配置されているのでしょうか? ->左ですか? ->そうですか?確かに DOM の順序を調整しても同じ効果が得られますが、メインを上位に配置するほど SEO 検索に適しています。実際、これに対する標準的な答えはありません。 left の内容も同様に重要であると考える場合は、left->main->right の DOM 順序は問題ありません。

あとは最後のステップだけです。フッターを一番下に配置し、ページ部分を持ち上げます。まずhtmlとbodyの高さを100%に設定して全画面表示の準備をします。ボディにはヘッダー、ページ、フッターが含まれるため、ボディにフレックス ボックス モデルを設定し、3 つのサブ要素がボディ内で縦に配置されるように flex-direction: column を設定します。 ; flex-direction: column; }

最後に、ページの拡張は上記のメインと同じです。ヘッダーとフッターが設定されていないためです。フレックスする場合、残りの高さはページ専用になります。

* { margin: 0; padding: 0; }html, body { height: 100%; }body {    display: flex;    flex-direction: column;}#header, #footer { width: 100%; }#page {    display: flex;    flex:auto;}#left, #right { width: 220px; }#right { order: 2; }#main {    flex: auto;    order: 1;}

適応型 3 列の等高レイアウトのアイデアを要約すると、本文は垂直フレックス モデルを適用してヘッダー、ページを許可します。 、フッターは縦方向に配置されます。ページ部分のみ flex:auto があり、高さが適応されます。ページ部分に flex モデルが適用され、コンテンツ、左列、右列が水平に配置され、コンテンツ部分のみ flex:auto が設定され、幅が適応されます。 SEO 最適化のためにコンテンツ部分が DOM の左右のサイドバーに配置されている場合は、順序を調整してください。

その他のレイアウト例については、「フレックスボックスで解決する」を参照してください。

フレックス ボックスを使用すると、等比率レイアウトを簡単に実装できます。

.Grid { display: flex; }.Grid-cell { flex: 1; }<div class="Grid">  <div class="Grid-cell">…</div>  <div class="Grid-cell">…</div>  <div class="Grid-cell">…</div></div>

固定比率の一部とアダプティブ レイアウトの残りを実装することもできます:

コメント領域レイアウト:

すべてコードページに記載されており、非常にシンプルなので自分で参照できます。

概要

flex はレイアウトに非常に便利です。もともと inline-block と float を使用して書かれた大量の醜くて保守が難しいコードも、flex を使用すると非常にエレガントに実装できます。 ? 垂直方向のセンタリングはすべて雲です。必要なのは時間だけです。それらの古いブラウザが死んだとき、フレックスボックスの春が来ます。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。