说到三栏布局,很多都会提到圣杯布局和双飞翼布局这两个经典的三栏布局方式。于是,我在网上搜了一些相关资料,阅读并跟着代码敲了一遍,发现在处理三栏布局上,他们采用的都是两边栏固定,中间栏自适应的策略。在处理页脚上,采用的是清除浮动方式。在处理边栏的方式上也基本一致,唯一的不同是html结构以及处理中间栏的方式不一样。现在试着用自己的语言来描述下这两个布局。

一、三栏布局 ——Marchew

这个三栏布局方式是在csdn看别人的圣杯布局时推荐的链接里的,据说是圣杯布局的原始形态,由外国人Marchew写的。因此,该布局在处理三栏布局时跟圣杯布局如出一辙,不过代码比圣杯布局简单些,而且在处理IE6兼容上也做得很好。

CSS代码:

    /*** The Essential Code ***/

    body {
min-width: 550px; /* 2 x LC width + RC width */
} #container {
padding-left: 200px; /* LC width */
padding-right: 150px; /* RC width */
} #container .column {
position: relative;
float: left;
} #center {
width: 100%;
} #left {
width: 200px; /* LC width */
right: 200px; /* LC width */
margin-left: -100%;
} #right {
width: 150px; /* RC width */
margin-right: -100%;
} #footer {
clear: both;
} /*** IE6 Fix ***/
* html #left {
left: 150px; /* RC width */
} /*** Just for Looks ***/ body {
margin: 0;
padding: 0;
background: #FFF;
} #header, #footer {
font-size: large;
text-align: center;
padding: 0.3em 0;
background: #999;
} #left {
background: #66F;
} #center {
background: #DDD;
} #right {
background: #F66;
} #container .column {
padding-top: 1em;
text-align: justify;
}

html代码:

<div id="header">This is the header.</div>

<div id="container">

    <div id="center" class="column">
<h1>This is the main content.</h1>
<p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla.</p>
<p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla.</p>
</div> <div id="left" class="column">
<h2>This is the left sidebar.</h2>
<p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla.</p>
</div> <div id="right" class="column">
<h2>This is the right sidebar.</h2>
<p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla.</p>
</div> </div> <div id="footer">This is the footer.</div>

二、三栏布局——圣杯布局

圣杯布局在处理中间块自适应上采用的策略主要是,三栏采用相对定位,左右栏填补两边空白的方式进行布局。在内容上,采用的是overflow:hidden,若有内容溢出,则直接隐藏。

CSS代码:

/*圣杯布局*/

* {
margin: 0;
padding: 0;
} body {
min-width: 420px;
} .header,
.footer {
border: 1px solid #333;
background: #aaa;
text-align: center;
} .left,
.main,
.right {
position: relative;
min-height: 130px;
float: left;
} .container {
border: 2px solid yellow;
padding: 0 220px 0 200px;
overflow: hidden;
} .left {
margin-left: -100%;
width: 200px;
background: red;
left: -200px;
} .right {
margin-left: -220px;
right: -220px;
width: 220px;
background: green;
} .main {
background: blue;
width: 100%;
} .footer {
clear: both;
}

html代码:

<div class="header">header</div>
<div class="container">
<div class="main">main</div>
<div class="left">left</div>
<div class="right">right</div>
</div>
<div class="footer">footer</div>
</div>

三、三栏布局——双飞翼布局

双飞翼布局在处理中间栏自适应上,采用过的策略是在主栏容器里再放一个内容容器,通过设置内容容器的margin进行自适应的调节。

CSS代码:

* {
margin: 0;
padding: 0;
} body {
min-width: 420px;
} .header,
.footer {
border: 1px solid #333;
background: #aaa;
text-align: center;
} .left,
.main,
.right {
float: left;
min-height: 130px;
} .container {
border: 2px solid yellow;
overflow: hidden;
} .left {
margin-left: -100%;
width: 200px;
background: red;
} .right {
margin-left: -220px;
width: 220px;
background: green;
} .main {
width: 100%;
background: blue;
} .content {
margin: 0 220px 0 200px;
} .footer {
clear: both;
}

html代码:

<div class="header">header</div>
<div class="container">
<div class="main">
<div class="content">main</div>
</div>
<div class="left">left</div>
<div class="right">right</div>
</div>
<div class="footer">footer</div>

CSS布局——三栏布局的更多相关文章

  1. CSS布局 - 三栏布局

    CSS布局技术可谓是前端技术中最基础的技术,就是因为基础,所以我认为要更加熟练,深入的去掌握,去梳理. 一. 传统 ---> 浮动实现的三栏布局 采用浮动实现的三栏布局有以下特点及注意事项: · ...

  2. CSS实现三栏布局(5种)

    常见的布局方式: float布局.Position定位.table布局.弹性(flex)布局.网格(grid)布局 那么我们就是用以上5种方式完成三栏布局,不过前提是左右宽度(假如左右宽度为300px ...

  3. 前端经典面试题之CSS实现三栏布局,左右宽度固定,中间宽度自适应

    前端常问的面试题,题目:假设高度一定,请写出三栏布局,左右宽度300px,中间自适应. 看到这里我希望你能停下来思考几分钟, 1分钟~2分钟~3分钟~4分钟~5分钟! 好了,那么你想出了几种答案呢? ...

  4. css 实现三栏布局的四种方式

    三栏布局就是左中右,左右两边固定,中间自适应. 1. 绝对定位 <div class="left">左边</div> <div class=" ...

  5. css篇-页面布局-三栏布局

    页面布局 题目:假设高度已知,请写出三栏布局,其中左栏.右栏宽度各为300px,中间自适应. 1)浮动 2)绝对定位 3)Flexbox 4)表格布局 5)网格布局(CSS3的Grid布局) 代码: ...

  6. 【CSS】三栏布局的经典实现

    要求:自适应宽度,左右两栏固定宽度,中间栏优先加载: <!DOCTYPE html> <html> <head> <title>layout</t ...

  7. css实现三栏布局,两边定宽,中间自适应

    1.利用定位实现 css代码如下: .box{overflow: hidden;height: 100px;margin: 10px 0;} .box>div{height: 100%;} #b ...

  8. 三种方法实现CSS三栏布局

    本文由云+社区发表 作者:前端林子 本文会分别介绍三种CSS实现三栏布局的方法,可在浏览器中打开查看效果 1.方法一:自身浮动的方法 实现方法:需要左栏向左浮动,右栏向右浮动,中间设左右margin来 ...

  9. css三栏布局方案整理

    日常开发中,经常会用到css三栏布局,现将工作中常用的css 三栏布局整理如下: 什么是三栏布局: 三栏布局,顾名思义就是两边固定,中间自适应. 一. float布局 <!DOCTYPE htm ...

随机推荐

  1. mybatis example 排序 语句

    mybatis example 排序 语句 IntegralInfoExample integral = new IntegralInfoExample(); integral.createCrite ...

  2. [codevs 1961]躲避大龙(dfs)

    题目:http://dev.codevs.cn/problem/1961/ 分析: 被“SPFA”的标签骗了…… 看了hzwer的博客才知道可以用f[i][0..60]表示每个点每个秒是否可以到.至于 ...

  3. 4、Java并发性和多线程-并发编程模型

    以下内容转自http://ifeve.com/%E5%B9%B6%E5%8F%91%E7%BC%96%E7%A8%8B%E6%A8%A1%E5%9E%8B/: 并发系统可以采用多种并发编程模型来实现. ...

  4. heap实现

    //STL提供的是Max heap,使用vector作为底部容器 //push_heap算法:首先将元素放到堆所对应的数组的末端,然后从该节点开始向上调整, //若当前结点键值比父结点大,则兑换位置, ...

  5. jquery 1.9以上新版本不支持toggle()的解决方法

    原文:http://blog.csdn.net/u011061889/article/details/50397462 参考: http://www.cnblogs.com/lionden/archi ...

  6. 使用CDN

    CDN的全称是Content Delivery Network.中文直译过来是:内容交付网络. 它的主要意思是,将某些内容进行交付的网络.对于站点开发而言,我们所讲的内容通常指的是内容文件(比如jav ...

  7. Rsync命令的使用

    Rsync的命令格式能够为下面六种: rsync [OPTION]- SRC DEST rsync [OPTION]- SRC [USER@]HOST:DEST rsync [OPTION]- [US ...

  8. Codeforces Round #211 (Div. 2)B. Fence

    B. Fence time limit per test 1 second memory limit per test 256 megabytes input standard input outpu ...

  9. hdoj--2073--无限的路(数学规律)

     无限的路 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Su ...

  10. bzoj 1022 小约翰的游戏John

    题目大意: n堆石子,两个人轮流取石子,每个人取的时候,可以随意选择一堆石子 在这堆石子中取走任意多的石子,但不能一粒石子也不取,取到最后一粒石子的人算输 思路: 首先当每堆石子数都为1时,偶数为先手 ...