今日は古典的なレイアウトの例について説明します:
左部分と右部分の幅が固定され、中央部分の幅が変更に応じて適応的に変化する 3 列レイアウトを実装します。ブラウザの幅
可能です 多くの友人はすでに笑っていましたが、これは二重飛行翼のレイアウトによって簡単に実現できます。ただし、2 つの飛行翼を超えて、3 列レイアウトを実装する方法を段階的に紹介することをお許しください。
CodePen の xal821792703 (@honoka) の Pen float-three-columns を参照してください。
これは、位置決めを支援するための追加要素を必要とせず、互換性にも優れた、より便利な実装方法です。ただし、1 つの欠点は、このレイアウト方法では、左右の列の固定幅と、中央の幅が適応される 3 列のレイアウトしか実現できないため、柔軟性が低いことです。
CodePen の xal821792703 (@honoka) の Pen bfc-three-columns を参照してください。 CSS による列 固定幅、右アダプティブ 2 列レイアウト」では、BFC 原則を使用して複数列レイアウトを実装する方法についてすでに説明しました。当然のことながら、BFC 要素はフローティング要素と重なりません。この例も BFC 原理を使用して完成させることができます。
同じ左列と右列の要素が最初にレンダリングされ、それぞれ左と右にフローティングされます。
Double-flying wing は、次のようなフロントエンドの専門家によって提案されました。タオバオ ユボとして フローティング、ネガティブ マージン、相対位置の 3 つのレイアウト属性を主に使用して、鳥のような 3 列のレイアウトを作成し、体が中央にあり、翼が両側にある複数列のレイアウト方法。
以下は、二重飛行翼の実装プロセスの簡単な紹介です:
例に示すように 3 列のレイアウトが必要であると仮定し、次の div 構造を記述します:
<div class="grid"> <div id="div-middle-02"><span>div-middle</span></div> <div id="div-left-02"><span>div-left</span></div> <div id="div-right-02"><span>div-right</span></div></div>
#div-middle-02 { float: left; background-color: #fff9ca; width: 100%; height: 50px;}
次に、鳥に翼を追加し始め、左右の列要素を左フローティングに設定し、負のマージンを調整してそれぞれの位置に配置します。
#div-middle-02 { float: left; background-color: #fff9ca; width: 100%; height: 50px;}#div-left-02 { float: left; background-color: red; width: 150px; margin-left: -100%; height: 50px;}#div-right-02 { float: left; background-color: yellow; width: 200px; margin-left: -200px; height: 50px;}
このスケルトンのレイヤーを通じて、鳥の体の位置を簡単に制御できます。この方法は、スケルトンの左マージンと右マージンがそれぞれ左列と右列の幅と等しくなるように調整することです:
<div id="div-middle-02"> <div id="middle-wrap-02"><span>div-middle</span></div></div>
さて、固定された左と右の幅と適応型中央を備えた 3 列のレイアウトが正常に完成しました。両翼の形態で完成。
プロセス全体を要約すると、最初に体を配置し、羽を追加し、次に体をスケルトンのレイヤーで包み、スケルトンを使用して体を正しい位置に配置します。これが完全な両翼レイアウトでしょうか?もちろんそうではありません。次に、鳥がさまざまな姿勢で飛行できるのと同じように、位置によって 3 列または 2 列のレイアウトを実現できます。この例は、相対配置と組み合わせると、次のような完全なエンティティになります。
#div-middle-02 { float: left; background-color: #fff9ca; width: 100%; height: 50px;}#middle-wrap-02 { margin: 0 200px 0 150px;}#div-left-02 { float: left; background-color: red; width: 150px; margin-left: -100%; height: 50px;}#div-right-02 { float: left; background-color: yellow; width: 200px; margin-left: -200px; height: 50px;}
.flex { display: flex; flex-flow: row;}#div-left-03 { background-color: red; width: 150px; height: 50px;}#div-middle-03 { background-color: #fff9ca; width: 100%; height: 50px;}#div-right-03 { background-color: yellow; width: 200px; height: 50px;}
效果如下图:
Flex 布局教程:语法篇
Flex 布局教程:实例篇
最后感谢大家的阅读,欢迎前往我的 repo 查看源代码整理,有任何问题也请尽情向我吐槽。