圣杯布局和双飞翼布局的比较

1、圣杯布局

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
       *{
           padding: 0;
           margin: 0;
       }
       /*设置最小高度*/
       body{
           min-width: 600px;
       }
        #header,#footer{
            width: 100%;
            height: 50px;
            background-color: lightskyblue;
            text-align: center;
            line-height: 50px;
        }
        /*通过padding的值进行调节*/
        #content{
            padding: 0 200px;
            /*overflow: hidden;*/
        }
        #middle,#left,#right{
            /*height:200px;*/
            float: left;
            /*伪登高*/
            padding-bottom: 10000px;
            margin-bottom: -10000px;
        }
       #left,#right{
           width: 200px;
           background: red;
       }
       /*通过定位进行左右的固定*/
       #left{
           margin-left: -100%;
           position: relative;
           top: 0;
           left: -200px;
       }
       #right{
           margin-left: -200px;
           position: relative;
           top: 0;
           right: -200px;
       }
       #middle{
           width: 100%;
           background: yellowgreen;
       }
       /*清除浮动*/
        .clearfix{
            content: " ";
            display: block;
            clear: both;
        }
    </style>
</head>
<body>
<div id="header">header</div>
<div id="content" class="clearfix">
    <div id="middle">middle</div>
    <div id="left">
        left<br>
        left<br>
        left<br>
        left<br>
        left<br>
        left<br>
    </div>
    <div id="right">right</div>
</div>
<div id="footer">footer</div>
</body>
</html>

2、双飞翼布局

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        *{
            padding: 0;
            margin: 0;
        }
        body{
            min-width: 600px;
        }
        #header,#footer{
            width: 100%;
            height: 50px;
            background-color: lightskyblue;
            text-align: center;
            line-height: 50px;
        }
        /*清除浮动*/
        #content{
            overflow: hidden;
        }
        #middle,#left,#right{
            /*height:200px;*/
            float: left;
            padding-bottom: 10000px;
            margin-bottom: -10000px;
        }
        #left,#right{
            width: 200px;
            background: red;
        }
        #left{
            margin-left: -100%;
        }
        #right{
            margin-left: -200px;
        }
        #middle{
            width: 100%;
            background: yellowgreen;
            overflow: hidden;
        }
        /*通过在主加载元素中添加新的div,利用margin调节*/
        #middle_inner{
            margin-left: 200px;
            margin-right: 200px;
            background-color: cyan;
            padding-bottom: 10000px;
            margin-bottom: -10000px;
        }
    </style>
</head>
<body>
<div id="header">header</div>
<div id="content" class="clearfix">
    <div id="middle">
        <div id="middle_inner">middle</div>
    </div>
    <div id="left">
        <!--left<br>-->
        <!--left<br>-->
        <!--left<br>-->
        <!--left<br>-->
        <!--left<br>-->
        <!--left<br>-->
        <!--left<br>-->
        <!--left<br>-->
        <!--left<br>-->
        <!--left<br>-->
        <!--left<br>-->
        <!--left<br>-->
    </div>
    <div id="right">right</div>
</div>
<div id="footer">footer</div>
</body>
</html>

3、异同

相同:

(1)都是将主列放在文档流的最前面,使主列优先加载

(2)两种布局都是让三列浮动,在通过调节负外边距形成三列布局

不同:

中间位置的处理:

       圣杯是利用父容器左右内边距+定位;

      双飞翼将主列中嵌套div,然后利用

    #middle-inner{
                    margin-left: 200px;
                    margin-right: 200px;
                }


猜你喜欢

转载自blog.csdn.net/xzz2222/article/details/79934381