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

圣杯布局和双飞翼布局是经典的三栏式布局。两种布局达到效果上基本相同,都是两边两栏宽度固定,中间栏宽度自适应。(这两种布局都比较老)

在HTML结构上中间栏在最前面保证了最先渲染中间提升性能,并且兼容性良好。两种布局的实现方法前半部分相同,后半部分的实现各有利弊,下面会简单介绍两者的区别。

布局效果:

注意点:

1. .middle元素位于最前面,保证最先渲染middle部分

2. 三个元素都浮动,使元素保持在一行上

3. .middle元素宽度设为100%,独占一行

4. .left元素设置margin-left: -100%,即可占据最左侧位置;.right元素设置margin-left: -200px;(元素宽为200px)

5. .left元素与.right元素将.middle元素左右两侧遮挡了,

针对遮挡,双飞翼布局的解决办法是(中间为两侧腾开位置),为.middle设置一个子元素,通过margin值来为左右两侧让道。

针对遮挡,圣杯布局的解决办法是:为三个元素的父元素加上padding属性,然后腾开位置(两侧采用相对定位为中间腾开位置),middle内容拉回来了,但left也跟着过来了,所以要还原,就对left使用相对定位 left:-200px  同理,right也要相对定位还原 right:-220px

贴上代码

双飞翼布局:

<!DOCTYPE html>
<html lang="en">
<head>

    <meta charset="UTF-8">
    <title>Document</title>
    <style>
    .middle {
        width: 100%;
        height: 200px;
        background: #abcdef;
        float: left;
    }
    .middleChild{
        /*margin: 0 200px;*/
        height: 100%;
    }
    .left, .right {
        width: 200px;
        height: 200px;
        float: left;
    }
    .left {
        background: #ccc;
        margin-left: -100%;
    }
    .right {
        background: pink;
        margin-left: -200px;
    }
    .left,
    .middle,
    .right{
        text-align: center;
        line-height: 200px;
    }

    </style>
</head>
<body>
        <div class="middle">
             <div class="middleChild">middle</div>
        </div>
        <div class="left">left</div>
        <div class="right">right</div>
</body>
<script>

</script>
</html>

圣杯布局

<!DOCTYPE html>
<html lang="en">
<head>

    <meta charset="UTF-8">
    <title>Document</title>
    <style>
    .container {
        padding: 0 200px;
    }
    .middle {
        width: 100%;
        height: 200px;
        background: #abcdef;
        float: left;
        /*position: relative;*/
    }
    .middleChild{
        /*margin: 0 200px;*/
        height: 100%;
    }
    .left, .right {
        width: 200px;
        height: 200px;
        float: left;
        position: relative;
    }
    .left {
        background: #ccc;
        margin-left: -100%;
        left: -200px;
    }
    .right {
        background: pink;
        margin-left: -200px;
        right: -200px;
    }
    .left,
    .middle,
    .right{
        text-align: left;
        line-height: 200px;
    }

    </style>
</head>
<body>
    <div class="container">
        <div class="middle">
             <!-- <div class="middleChild">middle</div> -->
             middle
        </div>
        <div class="left">left</div>
        <div class="right">right</div>
    </div>
</body>
<script>

</script>
</html>

原文地址:https://www.cnblogs.com/caoxueying2018/p/10937649.html

时间: 2024-08-08 23:19:13

css布局--圣杯布局和双飞翼布局的相关文章

css(四)、双飞翼布局

一.双飞翼布局 经典三列布局,也叫做圣杯布局[Holy Grail of Layouts]是Kevin Cornell在2006年提出的一个布局模型概念,在国内最早是由淘宝UED的工程师传播开来,在中国也有叫法是双飞翼布局,它的布局要求有几点: 1.三列布局,中间宽度自适应,两边定宽: 2.中间栏要在浏览器中优先展示渲染: 3.允许任意列的高度最高:4.要求只用一个额外的DIV标签: 5.要求用最简单的CSS.最少的HACK语句: 在不增加额外标签的情况下,圣杯布局已经非常完美,圣杯布局使用了相

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

按照我的理解,其实圣杯布局跟双飞翼布局的实现,目的都是左右两栏固定宽度,中间部分自适应. 但在这里实现起来还是有一些区别的 [圣杯布局] 在这里,实现了左(200px) 右(220px) 宽度固定,中间自适应,container部分高度保持一致. DEMO 稍微说明一下: html代码中  middle部分首先要放在container的最前部分.然后是left,right 1.将三者都 float:left , 再加上一个position:relative (因为相对定位后面会用到) 2.mid

css中的圣杯布局和双飞翼布局

圣杯布局 布局要求: 三列布局,中间自适应,两边定宽 中间栏要在浏览器优先渲染 允许任意列的高度最高 用最简单的CSS.最少的HACK语句 解释说明: 1.min-width:700px是为了当页面缩小到指定的700px的时候,页面内容宽度不再随着浏览器缩小.是为了电脑的正常浏览效果 2.注意到container设置的值0 220px  0 200px,上 右 下 左,所以left 设置widh:200px,right设置width:220px 3.设置min-height:300px,是让三列

双飞翼布局和圣杯布局解析

今天突然想起了温习一下css布局.之前看双飞翼布局只是粗略的看了一下,大概明白怎么做,但是并没有去延伸一下...还有它的孪生兄弟:圣杯布局.今天仔细的琢磨了一下:突然发现其实内容还不少的样子. 双飞翼布局或者说圣杯布局它们都是三列布局:(一列自适应和两列固定列).当然,除了三列布局,还有一列布局(自适应居中).两列布局(一列自适应一列固定列). 其他两种都相对来说简单些.就着重说一下三列布局. 一.双飞翼布局            先给出效果图:                 其中中间一部分是

认识圣杯布局和双飞翼布局

各种各样的布局,无非就是用了浮动 float,负边距,相对定位,通过这三者的巧妙组合跟拼凑来实现的.用好这些,布局就会很简单. 还没学会布局时,就听到有圣杯布局和双飞翼布局,这布局都有这么风骚的名字,就觉得很酷,事实也如此,了解了圣杯布局和双飞翼布局,才发现挺深奥的. 传统的布局中,当我们需要改变两栏的互换,就会很麻烦.因为还要涉及到 HTML 代码的修改,不能完全从 CSS 上更改,这叫 HTML 和 CSS 的耦合.而圣杯布局跟双飞翼布局就是能够不考虑主体的位置,能够只通过 CSS 代码就改

双飞翼布局介绍-始于淘宝UED

仔细分析各种布局的技术实现,可以发现下面三种技术被经常使用: 浮动 float 负边距 negative margin 相对定位 relative position 这是实现布局的三个最基本的原子技术.只要巧妙组合,并加以灵活运用,就能“拼”出各种布局的实现方案. 尝试之路考虑以下DOM结构: <div id="page">           <div id="hd"></div>              <div id

双飞翼布局介绍-始于淘宝UED-2011年淘宝玉伯写的

仔细分析各种布局的技术实现,可以发现下面三种技术被经常使用: 浮动 float 负边距 negative margin 相对定位 relative position 这是实现布局的三个最基本的原子技术.只要巧妙组合,并加以灵活运用,就能"拼"出各种布局的实现方案. 尝试之路考虑以下DOM结构: <div id="page"> <div id="hd"></div> <div id="bd&quo

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

[圣杯布局] 在这里,实现了左(200px) 右(220px) 宽度固定,中间自适应,container部分高度保持一致. DEMO 稍微说明一下: html代码中  middle部分首先要放在container的最前部分.然后是left,right 1.将三者都 float:left , 再加上一个position:relative (因为相对定位后面会用到) 2.middle部分 width:100%占满 3.此时middle占满了,所以要把left拉到最左边,使用margin-left:-

HTML特殊布局--------双飞翼布局

今天看到以前写的一篇布局的例子分享给大家,双飞翼布局. 什么是双飞翼布局?? 1.三列布局,中间宽度自适应,两边固定宽度; 2.中间栏在浏览器中优先展示渲染: 双飞翼布局的原理: 中间的盒子定100%的宽 float:left: 两边的盒子都float:left,定固定的宽:左边的个盒子margin-left:-100%; 右边的盒子margin-left:-自身的宽: 以下是例子:  <div class="box"/> <div class="main&

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

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