検索
ホームページウェブフロントエンドhtmlチュートリアルCSSレイアウト作例シリーズ(3) 左右幅固定、中央幅適応型の3カラムレイアウトの実装方法 - Double Flying Wings_html/css_WEB-ITnoseについても語ります

今日は古典的なレイアウトの例について説明します:

左部分と右部分の幅が固定され、中央部分の幅が変更に応じて適応的に変化する 3 列レイアウトを実装します。ブラウザの幅

可能です 多くの友人はすでに笑っていましたが、これは二重飛行翼のレイアウトによって簡単に実現できます。ただし、2 つの飛行翼を超えて、3 列レイアウトを実装する方法を段階的に紹介することをお許しください。

1. まず、フローティング レイアウトを使用して実装します

CodePen の xal821792703 (@honoka) の Pen float-three-columns を参照してください。

  1. 左の要素と右の要素が最初にレンダリングされます。フローティング
  2. 中央要素はドキュメント フローの最後にレンダリングされ、幅が 100% に設定されている場合は、左右の列要素の中央に自動的に挿入されます。はそれぞれ左列と右列の幅に設定され、中央の要素は正しい位置に調整されます。

これは、位置決めを支援するための追加要素を必要とせず、互換性にも優れた、より便利な実装方法です。ただし、1 つの欠点は、このレイアウト方法では、左右の列の固定幅と、中央の幅が適応される 3 列のレイアウトしか実現できないため、柔軟性が低いことです。

2. 実は、BFC

を使ってみることもできます

CodePen の xal821792703 (@honoka) の Pen bfc-three-columns を参照してください。 CSS による列 固定幅、右アダプティブ 2 列レイアウト」では、BFC 原則を使用して複数列レイアウトを実装する方法についてすでに説明しました。当然のことながら、BFC 要素はフローティング要素と重なりません。この例も BFC 原理を使用して完成させることができます。

同じ左列と右列の要素が最初にレンダリングされ、それぞれ左と右にフローティングされます。
  1. 次に、真ん中の要素をoverflow: hidden;に設定して、両側の浮動要素と重ならなければ、自然に独自の位置に挿入できます。
  2. 3. 次に、有名な double-flying wing レイアウトを試してみましょう

CodePen の xal821792703 (@honoka) による Pen Grid-three-columns を参照してください

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>
  1. まず、ドキュメント フローの中央の要素 最初に前面がレンダリングされ、次に左側にフローティングされ、幅が 100% に設定されます:
    #div-middle-02 {    float: left;    background-color: #fff9ca;    width: 100%;    height: 50px;}
  2. 中央の要素は列全体を直接埋めて、鳥の本体を形成します。
  3. 次に、鳥に翼を追加し始め、左右の列要素を左フローティングに設定し、負のマージンを調整してそれぞれの位置に配置します。
    #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;}
  4. 翼は正常にインストールされたようです。
  5. これで3カラムのレイアウトは完成しましたか?いや、いや、上のレンダリングをよく見てみると、div-middle テキスト ブロックが消えていることがわかります。これは、負のマージンを使用してフローティング要素の位置を調整すると、実際には要素の左列と右列がそれぞれの位置に配置され、中央の要素をカバーする部分にカスケード効果が発生するためです。真ん中の要素は成功ではありません。中央の要素はどのように配置すればよいでしょうか?鳥の体にはまだスケルトンが欠けているので、鳥の体にスケルトンを追加しましょう:
  6. rreee

    このスケルトンのレイヤーを通じて、鳥の体の位置を簡単に制御できます。この方法は、スケルトンの左マージンと右マージンがそれぞれ左列と右列の幅と等しくなるように調整することです:

    <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;}
  7. Shuangfeiyi は IE6 と互換性があり、実装できるさまざまなレイアウトについてはここでは説明しません。興味がある場合は、によって共有されているデモを参照してください。 Yu Bo
  8. 4. トレンドを追い、flex を試してみましょう
CodePen で xal821792703 (@honoka) の Pen flex-three-columns を参照してください

強力なダブル ウィング レイアウトを見た後、あなたはすでに熱望しています。あなたも試してみませんか?心配しないでください、ゲストさん、CSS3 の新しいレイアウト フレックスについての私の話を聞いてください。まず、この例が上記のデモでどのように実装されるかを説明しましょう:

  1. 设计一个弹性容器包裹需定位的三个元素,然后将该弹性容器的排列属性设为水平排列(flex-flow: row)
  2. 现在三个元素已经是三列布局了,再将三列元素分别设定一下宽度就行了,左右元素设定为定宽,自适应的中间元素设定为 100%。
    .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;}

    效果如下图:

  3. 搞定收工!大哥你瞪着我是怎么回事儿?~ 什么?效果不对?我的代码怎么可能不对?!~ 哎呦,别打我,我马上检查(哭)好吧,宽度不对,左右两侧的宽度均不符合设定的定值。什么情况呢?原来在 flex 布局中不能将被定位的元素宽度或高度设定为 100%,这样会影响其他定值大小的元素。那么该如何设置中间元素的宽度呢,flex: 1; 即可,可以试一下 DEMO 中去掉注释与不去掉的区别。
  4. 最后简单介绍一下 flex:flex 是 CSS3 的一种弹性容器布局,通过 flex,几行简单的 CSS 语句便可以实现各种布局(对!我就是 flex NC粉~被拍飞~)。那么 flex 有什么缺点呢?对,就是兼容性!
  5. 所以在使用 flex 的时候还请注意是否兼容当前浏览器,是否需要 -webkit- 标签。flex 的具体语法和各类实例因为篇(lan)幅(de)过(xie)多的原因,也不做过多介绍了,可以参考阮一峰老师的博文:

Flex 布局教程:语法篇

Flex 布局教程:实例篇

最后感谢大家的阅读,欢迎前往我的 repo 查看源代码整理,有任何问题也请尽情向我吐槽。

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

この記事では、HTML&lt; Datalist&GT;について説明します。オートコンプリートの提案を提供し、ユーザーエクスペリエンスの改善、エラーの削減によりフォームを強化する要素。

&lt; Progress&gt;の目的は何ですか 要素?&lt; Progress&gt;の目的は何ですか 要素?Mar 21, 2025 pm 12:34 PM

この記事では、HTML&lt; Progress&gt;について説明します。要素、その目的、スタイリング、および&lt; meter&gt;との違い要素。主な焦点は、&lt; Progress&gt;を使用することです。タスクの完了と&lt; Meter&gt; statiの場合

&lt; meter&gt;の目的は何ですか 要素?&lt; meter&gt;の目的は何ですか 要素?Mar 21, 2025 pm 12:35 PM

この記事では、html&lt; meter&gt;について説明します。要素は、範囲内でスカラーまたは分数値を表示するために使用され、Web開発におけるその一般的なアプリケーション。それは差別化&lt; Meter&gt; &lt; Progress&gt;およびex

ビューポートメタタグとは何ですか?レスポンシブデザインにとってなぜそれが重要なのですか?ビューポートメタタグとは何ですか?レスポンシブデザインにとってなぜそれが重要なのですか?Mar 20, 2025 pm 05:56 PM

この記事では、モバイルデバイスのレスポンシブWebデザインに不可欠なViewportメタタグについて説明します。適切な使用により、最適なコンテンツのスケーリングとユーザーの相互作用が保証され、誤用が設計とアクセシビリティの問題につながる可能性があることを説明しています。

&lt; iframe&gt;の目的は何ですか タグ?使用する際のセキュリティ上の考慮事項は何ですか?&lt; iframe&gt;の目的は何ですか タグ?使用する際のセキュリティ上の考慮事項は何ですか?Mar 20, 2025 pm 06:05 PM

この記事では、&lt; iframe&gt;外部コンテンツをWebページ、その一般的な用途、セキュリティリスク、およびオブジェクトタグやAPIなどの代替案に埋め込む際のタグの目的。

HTML5&lt; time&gt;を使用するにはどうすればよいですか 日付と時刻を意味的に表す要素?HTML5&lt; time&gt;を使用するにはどうすればよいですか 日付と時刻を意味的に表す要素?Mar 12, 2025 pm 04:05 PM

この記事では、html5&lt; time&gt;について説明します。セマンティックデート/時刻表現の要素。 人間の読み取り可能なテキストとともに、マシンの読みやすさ(ISO 8601形式)のDateTime属性の重要性を強調し、Accessibilitを増やします

HTML5のクロスブラウザー互換性のベストプラクティスは何ですか?HTML5のクロスブラウザー互換性のベストプラクティスは何ですか?Mar 17, 2025 pm 12:20 PM

記事では、HTML5クロスブラウザーの互換性を確保するためのベストプラクティスについて説明し、機能検出、プログレッシブエンハンスメント、およびテスト方法に焦点を当てています。

HTML5フォーム検証属性を使用してユーザー入力を検証するにはどうすればよいですか?HTML5フォーム検証属性を使用してユーザー入力を検証するにはどうすればよいですか?Mar 17, 2025 pm 12:27 PM

この記事では、ブラウザのユーザー入力を直接検証するために、必要、パターン、MIN、MAX、および長さの制限などのHTML5フォーム検証属性を使用して説明します。

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

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

ホットツール

SublimeText3 英語版

SublimeText3 英語版

推奨: Win バージョン、コードプロンプトをサポート!

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

AtomエディタMac版ダウンロード

AtomエディタMac版ダウンロード

最も人気のあるオープンソースエディター

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

Dreamweaver Mac版

Dreamweaver Mac版

ビジュアル Web 開発ツール