您现在的位置:首页 >> 前端 >> 内容

圣杯与双飞翼布局代码总结

时间:2017/2/24 22:23:00 点击:

  核心提示:圣杯与双飞翼布局代码总结1.圣杯布局定义: 圣杯布局是两边固定宽度,中间自适应的三栏布局,其中,中间栏放到文档流前面,保证先行渲染。解决方案大体都是三栏全部float:left浮动,而在解决中间栏p的...

圣杯与双飞翼布局代码总结

1.圣杯布局

定义:

圣杯布局是两边固定宽度,中间自适应的三栏布局,其中,中间栏放到文档流前面,保证先行渲染。解决方案大体都是三栏全部float:left浮动,而在解决中间栏p的内容不被遮挡上,圣杯布局是中间栏在添加相对定位,并配合left和right属性,效果上表现为三栏是单独分开的。

代码如下:

<!DOCTYPE html>
<html >
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0"> 
    <title>shengbeibuju</title> 
<style>
#hd{
    height:50px;
    background: yellow;
    text-align: center;
}
#bd{
    /*左右栏通过添加负的margin放到正确的位置了,此段代码是为了摆正中间栏的位置*/
    padding:0 200px 0 180px;
    height:100px;
}
#middle{
    float:left;
    width:100%;/*左栏上去到第一行*/
    height:100px;
    background:blue;
}
#left{
    float:left;
    width:180px;
    height:100px;
    margin-left:-100%;
    background:green;
    /*中间栏的位置摆正之后,左栏的位置也相应右移,通过相对定位的left恢复到正确位置*/
    position:relative; /*一定要加定位*/
    left:-180px;
}
#right{
    float:left;
    width:200px;
    height:100px;
    margin-left:-200px;
    background:green;
    /*中间栏的位置摆正之后,右栏的位置也相应左移,通过相对定位的right恢复到正确位置*/
    position:relative;
    right:-200px;
}
#footer{
    height:50px;
    background: red;
    text-align: center;
}
</style>
</head>
<body>
<p id="hd">header</p>
<p id="bd">
  <p id="middle">middle</p>
  <p id="left">left</p>
  <p id="right">right</p>
</p>
<p id="footer">footer</p>
</body>
</html>

1.双飞翼布局

定义:

圣杯布局和双飞翼布局基本上是一致的,都是两边固定宽度,中间自适应的三栏布局,双飞翼布局是在中间栏的p中嵌套一个p,内容写在嵌套的p里,然后对嵌套的p设置margin-left和margin-right,效果上表现为左右两栏在中间栏的上面,中间栏还是100%宽度,只不过中间栏的内容通过margin的值显示在中间。

代码如下:

<!DOCTYPE html>
<html >
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0"> 
<title>shuangfeiyi</title> 
<style>
    body{
        padding:0;
        margin:0
    }
    .header,.footer{
         width:100%; 
         background: yellow;
         height:70px;
         clear:both;
     }
        .left{
            background: green;
            width:150px;
            float:left;height:100px;
            margin-left:-100%;
            /*position: relative;*/  /*相对于圣杯布局而言,这里不用加定位*/
            /*left:-150px;*/
        }
        .main{
            background: blue;
            width:100%;
            height:100px;
            float:left;
 
        }
        .right{
            background: green;
            width:190px;
            float:left;
            height:100px;
            margin-left:-190px;
            /*position:relative;*/
            /*right:-190px;*/
        }
        .inner{
 
            margin-left:150px;
            margin-right:190px;
        }
</style>
</head>
<body>
<p class="header">Header</p>
<p class="bd">
    <p class="main">
        <p class="inner">   <!-- 这里在中间的p中再嵌套一个p -->
            内容
        </p>
    </p>
    <p class="left">Left</p>
    <p class="right">Right
    </p>
</p>
<p class="footer">Footer</p>
</body>
</html>

作者:网络 来源:翎汐