CSS布局 -- 圣杯布局 & 双飞翼布局

按照我的理解,其实圣杯布局跟双飞翼布局的实现,目的都是左右两栏固定宽度,中间部分自适应。

但在这里实现起来还是有一些区别的

【圣杯布局】

在这里,实现了左(200px) 右(220px) 宽度固定,中间自适应,container部分高度保持一致。

DEMO

稍微说明一下:

html代码中  middle部分首先要放在container的最前部分。然后是left,right

1.将三者都 float:left , 再加上一个position:relative (因为相对定位后面会用到)

2.middle部分 width:100%占满

3.此时middle占满了,所以要把left拉到最左边,使用margin-left:-100%

4.这时left拉回来了,但会覆盖middle内容的左端,要把middle内容拉出来,所以在外围container加上 padding:0 220px 0 200px

5.middle内容拉回来了,但left也跟着过来了,所以要还原,就对left使用相对定位 left:-200px  同理,right也要相对定位还原 right:-220px

6.到这里大概就自适应好了。如果想container高度保持一致可以给left middle right都加上min-height:130px

不过衰衰地发现ie中有问题.. ie6/7/8/9中 下面的空白高度都不一样..

当然,为了保证窗口不能缩太小无法展示左右,可以给body加上 min-width

好了,代码敬上:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<title>圣杯布局</title>
<style type="text/css">
    *{margin: 0;padding: 0;}
    body{min-width: 700px;}
    .header,
    .footer{
        border: 1px solid #333;
        background: #aaa;
        text-align: center;
    }
    .left,
    .middle,
    .right{
        position: relative;
        float: left;
        min-height: 130px;
    }
    .container{
        padding:0 220px 0 200px;
        overflow: hidden;
    }
    .left{
        margin-left: -100%;
        left: -200px;
        width: 200px;
        background: red;
    }
    .right{
        margin-left: -220px;
        right: -220px;
        width: 220px;
        background: green;
    }
    .middle{
        width: 100%;
        background: blue;
        word-break: break-all;

    }
    .footer{
        clear: both;
    }
</style>
</head>
<body>
<div class="header">
    <h4>header</h4>
</div>
<div class="container">
    <div class="middle">
        <h4>middle</h4>
        <p>HHHHHHHHHHHHHHHHHHHHHH
        hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh
        HHHHHHHHHHHHHHHHHHHHHH
        hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh
        </p>
    </div>
    <div class="left">
    <h4>left</h4>
        <p>oooooooooooooo
        0000000000000000
        00000000000000000
        ooooooooooooooo
        ooooooooooooooo
        000000000000000</p>
    </div>
    <div class="right">
    <h4>right</h4>
        <p>BBBBBBBBBBBBBB
        888888888888888888
        BBBBBBBBBBBBBBBBBB
        88888888888888888888</p>
    </div>
    </div>
    <div class="footer">
        <h4>footer</h4>
    </div>
</body>
</html>

【双飞翼布局】

DEMO

听说双飞翼布局是玉伯大大提出来的,始于淘宝UED

如果把三栏布局比作一只大鸟,可以把main看成是鸟的身体,sub和extra则是鸟的翅膀。这个布局的实现思路是,先把最重要的身体部分放好,然后再将翅膀移动到适当的地方.

其实跟上边的圣杯布局差不多的,当然也可以改动一下(自己想想有哪些不同吧)

恩,这里有一只鸟~

左翅sub有200px,右翅extra..220px.. 身体main自适应未知

1.html代码中,main要放最前边,sub  extra

2.将main  sub  extra 都float:left

3.将main占满 width:100%

4.此时main占满了,所以要把sub拉到最左边,使用margin-left:-100%  同理 extra使用margin-left:-220px

(这时可以直接继续上边圣杯布局的步骤,也可以有所改动)

5.main内容被覆盖了吧,除了使用外围的padding,还可以考虑使用margin。

给main增加一个内层div-- main-inner, 然后margin:0 220px 0 200px

6.main正确展示

代码敬上:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<title>双飞翼布局</title>
<style type="text/css">
    *{margin: 0;padding: 0;}
    body{min-width: 700px;}
    .header,
    .footer{
        border: 1px solid #333;
        background: #aaa;
        text-align: center;
    }
    .sub,
    .main,
    .extra{
        float: left;
        min-height: 130px;
    }
    .sub{
        margin-left: -100%;
        width: 200px;
        background: red;
    }
    .extra{
        margin-left: -220px;
        width: 220px;
        background: blue;
    }
    .main{
        width: 100%;
    }
    .main-inner{
        margin-left: 200px;
        margin-right: 220px;
        min-height: 130px;
        background: green;
        word-break: break-all;
    }
    .footer{
        clear: both;
    }
</style>
</head>
<body>
<div class="header">
    <h4>header</h4>
</div>
    <div class="main">
    <div class="main-inner">
        <h4>main</h4>
        <p>HHHHHHHHHHHHHHHHHHHHHH
        hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh
        HHHHHHHHHHHHHHHHHHHHHH
        hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh
        </p>
        </div>
    </div>
    <div class="sub">
    <h4>sub</h4>
        <p>oooooooooooooo
        0000000000000000
        00000000000000000
        ooooooooooooooo
        ooooooooooooooo
        000000000000000</p>
    </div>

      <div class="extra">
    <h4>extra</h4>
        <p>BBBBBBBBBBBBBB
        888888888888888888
        BBBBBBBBBBBBBBBBBB
        88888888888888888888</p>
    </div>
    <div class="footer">
        <h4>footer</h4>
    </div>
</body>
</html>
时间: 2024-10-29 10:49:09

CSS布局 -- 圣杯布局 & 双飞翼布局的相关文章

布局——圣杯和双飞翼布局

css可以继承的属性有哪些? Font 系列 text系列 color line-height border-radius的值的问题 四个值的顺序是 左上 右上 右下 左下. white-space 规定段落中的文本换不换行 往往值是nowrap 不换行 Word-wrap 属性允许长的内容可以自动换行  属性值是 break-word 允许 默认是不允许 写三角形 宽高必须是0 margin对布局的影响  双飞翼布局 圣杯布局 () Margin是 外边距,属性值是数字 数字又分正负. 正数:

CSS中经典的双飞翼布局(

笔者在一些博客和论坛中经常看到经典的双飞翼布局,淘宝的首页也运用了这种兼容性很好的双飞翼布局 1.何谓双飞翼布局? 简单来说,双飞翼布局是将一个网页分为左列,中列和右列三部分,并且我们要得到的效果是: 左列和右列宽度恒定,中间列的宽度根据浏览器窗口的大小自适应. 2.如何实现双飞翼布局? (1)首先我们要得到如下的布局样式: <div class="container"> <div class="column" id="center_pa

垂直居中,水平居中,垂直+水平居中,圣杯和双飞翼布局

一:先说一下行内元素和块级元素: 行内元素:a.img.input.label .select.small.span.textarea ... 块级元素:div .dl.h1.h2.form. pre - 格式化文本.table .ul.ol.p... 更多的介绍看这个:http://www.cnblogs.com/Jackie0714/p/4923639.html 二:水平居中: 1.有宽度和高度的块级元素一般都用margin:0 auto.行内元素的话,一般都是用text-align:cen

圣杯和双飞翼布局

圣杯布局: 原理:给包裹层设置左右padding值空出left和right的位置,使用负边距,左边margin-left:-100%,右边margin-left:-100px:此时左右两个盒子位于主盒子两侧但是会遮挡住主盒子的内容,所以再给左盒子position:relative,left:-100px,右盒子position:relative:right:-100px,使左右两个盒子定位正确. /*html部分*/ <div class="container"> <

关于圣杯、双飞翼布局

<!DOCTYPE html><html><head> <title>附加案例</title> <style type="text/css"> body{ background: #ccc; margin: 0; padding: 0; } .container{ --width: 400px; width:calc(var(--width) * 2); height: var(--width); margin:

百分比、圣杯和双飞翼布局

1. 百分比布局:核心 所有的百分比都是相对父级的 Div{width:50%;}div的宽是它父级元素宽的百分之五十 谷歌浏览器默认字体大小16px,最小字体是10px. 面试题html{font-size:62.5%} 因为62.5%*16=10px 这样方便计算整个页面的字体大小都 是10px,因为字体可以继承. Css中哪些属性是可以继承的? Font text line-height color visibility list-style 2.圣杯布局: 两端固定,中间自适应 <!DO

CSS中的圣杯布局与双飞翼布局

一,圣杯布局 1,什么是圣杯布局? 所谓圣杯布局就是用于实现一个两侧宽度固定,中间宽度自适应的三栏布局 2,构建圣杯布局的步骤: 2.1,添加一个容器,在这个容器中添加放三个盒子(左.中.右): 2.2,设置两侧盒子(左.右)的宽度 ,使其宽度固定: 2.3,设置中间盒子的宽度为100%,这是中间盒子宽度自适应的关键: 2.4,设置容器的padding-left和padding-right属性,属性值分别为左盒子的宽度和右盒子的宽度: 2.5,让三个盒子都向左浮动,向右浮动可能会出现问题,所以都

三栏式布局(所谓的圣杯和双飞翼)

× 目录 [1]float [2]absolute [3]flex[4]总结 前面的话 常常听说圣杯布局和双飞翼布局,以为是两个很高级的语汇.但实际上,他们只是三栏式布局的两种布局方法而已.本文将介绍三栏式布局的3种思路 思路一: float [1]圣杯布局 圣杯布局使用float.负margin和relative,不需要添加额外标签..main元素设置padding,为两侧定宽元素留出位置.内容元素设置100%宽度,占据中间位置.而两侧定宽元素通过设置负margin和relative的偏移属性

详解 CSS 七种三栏布局技巧

作者:林东洲 链接:https://zhuanlan.zhihu.com/p/25070186 来源:知乎 著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 三栏布局,顾名思义就是两边固定,中间自适应.三栏布局在开发十分常见,那么什么是三栏布局?比如我打开某东的首页: 映入眼帘的就是一个常见的三栏布局:即左边商品导航和右边导航固定宽度,中间的主要内容随浏览器宽度自适应. 下面围绕的这样的目的,即左右模块固定宽度,中间模块随浏览器变化自适应,想要完成的最终效果如下图所示: 红色

css布局之圣杯布局和双飞翼布局

圣杯布局和双飞翼布局 今天看了很多圣杯布局和双飞翼布局的技术博客,通过自己的理解总结一下吧. 1.二者相同点: 实现的都是三栏布局,两边的盒子宽度固定,中间盒子自适应,也就是我们常说的固比固布局.它们实现的效果是一样的. 2.不同点: 圣杯布局知识点:浮动,负边距,相对定位,不需要添加额外标签. 双飞翼:只用到浮动,负边距,不需要使用相对定位,需要添加一个额外的标签. 注意:html结构中中间部分要写在左右布局之前,为了优先渲染. 下面就先来看一下圣杯布局的实现过程吧: 先写出基本DOM结构: