说到三栏布局,很多都会提到圣杯布局和双飞翼布局这两个经典的三栏布局方式。于是,我在网上搜了一些相关资料,阅读并跟着代码敲了一遍,发现在处理三栏布局上,他们采用的都是两边栏固定,中间栏自适应的策略。在处理页脚上,采用的是清除浮动方式。在处理边栏的方式上也基本一致,唯一的不同是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. 玲珑杯 ACM Round #12

    A =w= B 占坑 C 题意:有长度为n的序列A和长度为n的序列W,以及一个G,对于Ui,1<=Ui<=Wi,求Σgcd(Ai,Ui)=G的方案数,n<=1e3,Ai<=1e ...

  2. Sublime Text 3配置支持Markdown编辑

    继上一篇http://www.cnblogs.com/EasonJim/p/7119304.html文章安装好之后,对Markdown支持需要做如下处理: 1.按下[Ctrl]+[Shift]+[P] ...

  3. Manthan, Codefest 16 F

    寻找树上最大权值和的两条不相交的路径. 树形DP题.挺难的,对于我…… 定义三个变量ma[MAXN], t[MAXN], sum[MAXN] 其中,ma[i]代表i子树中,最长的路径和 t[i]代表i ...

  4. [javase学习笔记]-7.7 thiskeyword的细节与应用

    这一节我们接着上一节来继续学习thiskeyword. 我们之前在7.5节中的构造函数应注意的细节中提到过一个细节就是构造函数能够调用一般函数,但一般函数不能直接调用构造函数.可是我们没有深究构造函数 ...

  5. 2015:WPS笔试-Android开发岗位

    题目一共三道: 一:实现一个函数,能够推断两条直线的关系:平行.重合.垂直或相交. 二:实现一个函数.能够得到随意两个日期的相隔天数. 三:针对题目一或题目二,实现一个完整的单元測试. (笔试后在网上 ...

  6. dbms_metadata.get_ddl的用法

    --GET_DDL: Return the metadata for a single object as DDL. -- This interface is meant for casual bro ...

  7. 从IBM的计划中分析出中国重新相当然的错误选择吗

    <IBM欲用物联网技术解决北京雾霾难题> http://security.zol.com.cn/469/4690141.html 读了上文.分析出的. 因为我没有太多的数据.不好分析. 有 ...

  8. sed 之 -n p

    sed是一个面向字符流的编辑器,一般情况下每次读入一行到一个名为模式空间的地方,进行编辑:但是也可以读入多行数据进行编辑. -n:抑制默认输出 p打印模式空间内容 cat test a b sed ' ...

  9. ios7--UIImageView

    // // ViewController.m // 03-UIImageView的使用 // #import "ViewController.h" @interface ViewC ...

  10. 网络安全中机器学习大合集 Awesome

    网络安全中机器学习大合集 from:https://github.com/jivoi/awesome-ml-for-cybersecurity/blob/master/README_ch.md#-da ...