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

圣杯布局

布局要求:

三列布局,中间自适应,两边定宽

中间栏要在浏览器优先渲染

允许任意列的高度最高

用最简单的CSS、最少的HACK语句

解释说明:

1.min-width:700px是为了当页面缩小到指定的700px的时候,页面内容宽度不再随着浏览器缩小。是为了电脑的正常浏览效果

2.注意到container设置的值0 220px  0 200px,上 右 下 左,所以left 设置widh:200px,right设置width:220px

3.设置min-height:300px,是让三列看起来没那么的矮

4.浮动的情况下,定义负边距会使div向上移动,margin-left:-100%会使移动到最左则,然后再加上left:-200px,正好使left归位。right原理相同。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>圣杯布局</title>
    <style type="text/css">
      *{
          margin: 0;
          padding: 0;
      }
      body{
          min-width: 700px;
      }
      .header,.footer{
       float: left;
       width: 100%;
       background: #f60;
       height: 40px;
       line-height: 40px;
       text-align: center;
      }
      .container{
          padding: 0 220px 0 200px;
      }
      .left,.middle,.right{
          position: relative;
          float: left;
          min-height: 300px;
      }
      .middle{
          width: 100%;
          background: #1a5acd;
      }
      .left{
          width: 200px;
          background: #f00;
          margin-left: -100%;
          left: -200px;
      }
      .right{
          width: 220px;
          background: #0f0;
          margin-left: -220px;
          right:-220px;
      }

    </style>
</head>
<body>
    <div class="header">
        <h4>头部</h4>
    </div>
    <div class="container">
        <div class="middle">
            <h4>middle</h4>
            <p>这是页面中间内容</p>
        </div>
        <div class="left">
            <h4>left</h4>
            <p>这是页面左侧内容</p>
        </div>
        <div class="right">
            <h4>right</h4>
            <p>这是页面右面的内容</p>
        </div>
    </div>
    <div class="footer">
        <h4>尾部</h4>
    </div>
</body>
</html>

双飞翼布局:

经过淘宝工程师针对圣杯布局改良后得出双飞翼布局

去掉相对布局,只需要浮动和负边距

解释说明:双飞翼布局得到的效果试图与圣杯布局一样,只不过是写法不太一样,主要是没有用container包括中间三部分,相对定位也没用到

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>双飞翼布局</title>
    <style type="text/css">
    *{
        margin:0;
        padding:0;
    }
    body{
        min-width:700px;
    }
    .header,.footer{
        width: 100%;
        float: left;
        height: 40px;
        background: #ddd;
        text-align: center;
        line-height: 40px;
    }
    .left,.right,.middle{
        float: left;
        min-height: 300px;
    }
    .middle{
        width: 100%;
        min-height:300px;
    }
    .middle-inner{
        margin-left: 200px;
        margin-right: 220px;
        background: red;
        min-height:300px; 

    }
    .left{
        width: 200px;
        background: #0F0;
        margin-left: -100%;
    }
    .right{
        width: 220px;
        background: blue;
        margin-left: -220px;
    }
    </style>
</head>
<body>
    <div class="header">
        <h4>头部</h4>
    </div>
        <div class="middle">
           <div class="middle-inner">
            <h4>middle</h4>
            <p>这是页面中间内容</p>
           </div>
        </div>
        <div class="left">
            <h4>left</h4>
            <p>这是页面左侧内容</p>
        </div>
        <div class="right">
            <h4>right</h4>
            <p>这是页面右面内容</p>
        </div>
    <div class="footer">
        <h4>尾部</h4>
    </div>
</body>
</html>

时间: 2024-10-14 10:47:20

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

CSS中的圣杯布局,以及圣杯布局与双飞翼布局的区别

为了解决中间宽度自适应,左右列固定宽度,最早出现的是圣杯布局,双飞翼布局是对圣杯布局的改良,同样这种 布局的优势在于在中间列中的文档可以优先渲染. 1.什么是圣杯布局 其实对于圣杯布局,前面一部分与双飞翼布局完全相同 <style>   .column{ float:left } .container{ width:100% } .column{ height:300px; }   #center_panel{ width:100%;  background-color:red; } #rig

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

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

css两栏布局、圣杯布局、双飞翼布局

最近几个月一直用vue在写手机端的项目,主要写业务逻辑,在js方面投入的时间和精力也比较多.这两天写页面明显感觉css布局方面的知识有不足,所以复习一下布局方法. 两栏布局 1.浮动 .box1 .left { float: left; width: 100px; height: 100px; background-color: red; } .box1 .right { margin-left: 100px; height: 100px; background-color: green; }

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

圣杯布局和双飞翼布局是经典的三栏式布局.两种布局达到效果上基本相同,都是两边两栏宽度固定,中间栏宽度自适应.(这两种布局都比较老) 在HTML结构上中间栏在最前面保证了最先渲染中间提升性能,并且兼容性良好.两种布局的实现方法前半部分相同,后半部分的实现各有利弊,下面会简单介绍两者的区别. 布局效果: 注意点: 1. .middle元素位于最前面,保证最先渲染middle部分 2. 三个元素都浮动,使元素保持在一行上 3. .middle元素宽度设为100%,独占一行 4. .left元素设置ma

圣杯布局和双飞翼布局的理解和区别

圣杯布局和双飞翼布局基本上是一致的,都是两边固定宽度,中间自适应的三栏布局,其中,中间栏放到文档流前面,保证先行渲染.解决方案大体相同,都是三栏全部float:left浮动,区别在于解决中间栏div的内容不被遮挡上,圣杯布局是中间栏在添加相对定位,并配合left和right属性,效果上表现为三栏是单独分开的(如果可以看到空隙的话),而双飞翼布局是在中间栏的div中嵌套一个div,内容写在嵌套的div里,然后对嵌套的div设置margin-left和margin-right,效果上表现为左右两栏在

圣杯布局,双飞翼布局详解

圣杯布局和双飞翼布局解决的问题是一样的,都是用来解决左右定宽,中间自适应的三栏布局,中间栏要放在文档流前面以优先渲染. 圣杯布局和双飞翼布局:三栏全部加上float:left,左右两栏加上负margin,以形成三栏布局. 圣杯布局:大的div设置padding-left和padding-right,左右两个div用相对布局position: relative,加上right和left属性.双飞翼布局:中间div内加一层标签,在设置内层标签的margin html圣杯布局: <div class=

圣杯布局和双飞翼布局的作用和区别

圣杯布局和双飞翼布局解决的问题是一样的,就是两边顶宽,中间自适应的三栏布局,中间栏要在放在文档流前面以优先渲染. 圣杯布局和双飞翼布局解决问题的方案在前一半是相同的,也就是三栏全部float浮动,但左右两栏加上负margin让其跟中间栏div并排,以形成三栏布局. 不同在于解决”中间栏div内容不被遮挡“问题的思路不一样:圣杯布局,为了中间div内容不被遮挡,将中间div设置了左右padding-left和padding-right后,将左右两个div用相对布局position: relativ

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

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

圣杯布局和双飞翼布局

圣杯布局和双飞翼布局基本上是一致的,都是两边固定宽度,中间自适应的三栏布局,其中,中间栏放到文档流前面,保证先行渲染.解决方案大体相同,都是三栏全部float:left浮动,区别在于解决中间栏div的内容不被遮挡上,圣杯布局是中间栏在添加相对定位,并配合left和right属性,效果上表现为三栏是单独分开的(如果可以看到空隙的话),而双飞翼布局是在中间栏的div中嵌套一个div,内容写在嵌套的div里,然后对嵌套的div设置margin-left和margin-right,效果上表现为左右两栏在

圣杯布局与双飞翼布局

圣杯布局和双飞翼布局的目的都是:左右两栏固定宽度,中间部分自适应: 圣杯布局 圣杯布局HTML: <div class="wrap"> <div class="main"> 我是主要 </div> <div class="left"> 我是左边 </div> <div class="right"> 我是右边 </div> </div>