圣杯布局和双飞燕布局

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/victor_ll/article/details/78909305
  • 两者都属于三列布局,是一种很常见的页面布局方式。
  • 三列一般分别是子列sub、主列main和附加列extra
  • 其中子列一般是居左的导航,且宽度固定;
  • 主列是居中的主要内容,宽度自适应;
  • 附加列一般是广告等额外信息,居右且宽度固定。

圣杯布局

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style type="text/css">
        body {
            min-width: 600px; /* 2*sub + extra */
        }
        .container {
            padding-left: 210px;
            padding-right: 190px;
        }
        .main {
            float: left;
            width: 100%;
            height: 300px;
            background-color: rgba(255, 0, 0, .5);
        }
        .sub {
            position: relative;
            left: -210px;
            float: left;
            width: 200px;
            height: 300px;
            margin-left: -100%;
            background-color: rgba(0, 255, 0, .5);
        }
        .extra {
            position: relative;
            right: -190px;
            float: left;
            width: 180px;
            height: 300px;
            margin-left: -180px;
            background-color: rgba(0, 0, 255, .5);
        }
    </style>
</head>
<body>
<div class="container">
    <div class="main"></div>
    <div class="sub"></div>
    <div class="extra"></div>
</div>
    
</body>
</html>

双飞翼布局(淘宝使用的布局方式)

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style type="text/css">
        .main-wrapper {
            float: left;
            width: 100%;
        }
        .main {
            height: 300px;
            margin-left: 210px;
            margin-right: 190px;
            background-color: rgba(255, 0, 0, .5);
        }
        .sub {
            float: left;
            width: 200px;
            height: 300px;
            margin-left: -100%;
            background-color: rgba(0, 255, 0, .5);
        }
        .extra {
            float: left;
            width: 180px;
            height: 300px;
            margin-left: -180px;
            background-color: rgba(0, 0, 255, .5);
        }
    </style>
</head>
<body>
    <div class="main-wrapper">
        <div class="main"></div>
    </div>
    <div class="sub"></div>
    <div class="extra"></div>

</body>
</html>

总结:

  • 两种布局方式都是把主列放在文档流最前面,使主列优先加载。
  • 两种布局方式在实现上也有相同之处,都是让三列浮动,然后通过负外边距形成三列布局。
  • 两种布局方式的不同之处在于如何处理中间主列的位置:
  • 圣杯布局是利用父容器的左、右内边距定位;
  • 双飞翼布局是把主列嵌套在div后利用主列的左、右外边距定位。

猜你喜欢

转载自blog.csdn.net/victor_ll/article/details/78909305