この記事の主な内容 Webページでよく使われる3カラムレイアウトの実装方法を紹介します。
この記事は主に次の記事を参照しています:
私がよく知っている 3 つの 3 列 Web ページの幅適応型レイアウト方法 - Zhang Xinxu
2 つ列レイアウト、3 列レイアウト レイアウト、均等高さレイアウト、フロー レイアウト - Xiaoqi
CSS レイアウト - 左固定幅、右適応幅、均等高さレイアウト - w3cplus
均等高さの列レイアウトを作成する 8 つの方法達成すべき目標は次のとおりです。左が適応型画面幅、右が適応型画面幅です。
アイデア: 左側にフロートを設定し、右側にマージン左の値を追加して、左側の固定レイアウトと右側のアダプティブ レイアウトを実現します。
HTMLとCSSは以下の通りです。
2カラムレイアウト方法1
<div id="left"></div><div id="content"></div>
ここをクリックしてデモを表示
アイデア: 左側に絶対配置。右側の列は margin-left を使用して実装されます。
HTMLとCSSは以下の通りです。
2カラムレイアウト方法2
<div id="left">左边内容</div><div id="content">主要内容</div>
ここをクリックしてデモを表示
アイデア: フローティングと負のマージンを実装して使用します。
HTMLとCSSは以下の通りです。
2カラムレイアウト方法3
<div id="left">左边内容</div><div id="content"> <div id="contentInner">主要内容</div></div>
デモを表示するにはここをクリックしてください
左側にサイドバー、右側にメインコンテンツ
HTML と CSS は次のとおりです。
左右 2 列幅の固定レイアウト
<div class="wraper"> <div class="header"> <h1>这是头部文字</h1> </div> <div class="aside sidebar"> <h2>这是侧边栏</h2> </div> <div class="main-content"> <h2>主要内容</h2> </div> <div class="footer"> <h2>这是底部内容</h2> </div></div>
デモを表示するにはここをクリックしてください
サイドバーは右側にあり、メインコンテンツは左側にあります
上記のコードの HTML 構造を変更せずに、CSS でサイドバーをフローティングするだけです:
左右2列の固定幅レイアウト 2
<div class="wraper"> <div class="header"> <h1>这是头部文字</h1> </div> <div class="aside sidebar"> <h2>这是侧边栏</h2> </div> <div class="main-content"> <h2>主要内容</h2> </div> <div class="footer"> <h2>这是底部内容</h2> </div></div>
ここをクリックしてデモを表示します
2 列固定幅レイアウトを実装するその他の方法:
http://www.w3cplus.com/ css/layout/fixed-layout/two-columns-2.html
http://www.w3cplus.com/css/layout/fixed-layout/two-columns-3.html達成すべき目標は、左、中央、右の 3 列レイアウト、左と右の列の幅は固定 (200px に設定)、中央の幅は適応型です。
アイデア: 左右の列は絶対位置を使用しますと は、ページの左側と右側にそれぞれ固定されます。側面では、中央の本文の列がマージン値を持って配置されます。 HTML と CSS は次のとおりです。
3 列レイアウトの絶対配置
<div id="left"></div><div id="main"> <div class="box">中间内容</div></div><div id="right"></div>
デモを表示するにはここをクリックしてください
この方法の欠点は次のとおりです。中央の列に幅のある内部要素 (ボックス) が含まれている場合、ブラウザの幅が一定以下であると同時に、左右の固定バーと中央のボックスが重なり合います。
アイデア: まず、中央のボディは 2 層ラベルを使用し、外側の div 幅は 100% で表示され、フロート表示されます。内側の div は実際のメインコンテンツで、左右に 200px のマージン値が含まれます。左の列と右の列の両方でマージンの負の値の方法が使用され、左の列は左にフロートされ、margin-left は -100% であるため、左の列の div はページの左側に配置されます。 ; 右の列も左に移動し、その margin-left 値は負の値になり、そのサイズはそれ自体の幅の 200 ピクセルになります。
HTMLとCSSは以下のとおりです。
3カラムレイアウトのマイナスマージン方式
<div id="main"> <div id="content">中间内容</div></div><div id="right"></div><div id="left"></div>
ここをクリックしてデモを表示
这种方法需要注意的是几个div的顺序, 先是主体部分div,然后再是左右两栏的div。同样存在方法一的不足,当中间栏含有一定宽度的内部块元素时,缩小浏览器窗口左右栏内容和中间块元素重叠。
应用了标签浮动跟随特性,左栏左浮动,右栏右浮动,主体放在后面,可以实现自适应。
这里几个div的顺序关键是主体的div放在后面,左右两栏顺序任意。
HTML和CSS如下:
三栏布局之自身浮动法
<div id="right"></div><div id="left"></div><div id="main"></div>
点击这里查看Demo
这个方法的优点是简洁高效,缺点也很明显,中间栏要避免 clear: both
使用浮动,负边距,和相对定位来实现。优点:
缺点:main需要额外的包装层
HTML和CSS如下:
双飞翼布局
<div id="page"> <div id="head">head</div> <div id="body"> <div class="main"> <div class="main-content">Main-content</div> </div> <div class="Sub">sub</div> <div class="Extra">Extra</div> </div> <div id="foot">Foot</div></div>
先把最重要的main放到前面,并将main占满100%,然后是sub, extra。将三者都采用浮动布局: float:left,利用margin-left: -100%,把sub拉倒最左边,同理用margin-left: -180px将extra放到右侧。这样将sub 和extra定位到正确的位置。然后定位main:给main增加一层包裹,里层的main-content的作用目标是定位main到合适的位置,为此,引入margin。
点击这里查看Demo
圣杯布局和双飞翼布局都是实现两边顶宽,中间自适应的三栏布局,中间栏放在文档流前面优先渲染。两者不同之处在于”中间栏div的内容不被遮挡的实现思路”:
HTML和CSS如下:
圣杯布局
<div id="page"> <div id="header"> This is the Header</div> <div id="container"> <div id="center" class="column" >Main content</div> <div id="left" class="column" >left sidebar </div> <div id="right" class="column" > right sidebar </div> </div> <div id="footer-wrapper"> <div id="footer">This is the footer </div> </div></div>
点击这里查看Demo
HTML和CSS如下:
三栏布局之中间固定
<div id="left"> <div class="inner"></div></div><div id="main"> <div class="inner"></div></div><div id="right"> <div class="inner"></div></div>
点击这里查看Demo
使用这种方法实现的效果不太理想,当浏览器窗口缩小的时候,左右两侧的内容就会被”挤掉”
HTML和CSS如下:
三栏布局之中间固定
<div class="grid"> <div class="col fluid">左侧内容</div> <div class="col fixed">中间</div> <div class="col fluid">右侧内容</div></div>
点击这里查看Demo
用来解决父元素高度自适应高度最大的子元素。只需在浮动元素父元素添加伪类:
.container:after { content: ""; display: block; clear: both;}
未完待续。。。