css-常用布局-圣杯&双飞翼

圣杯布局

float实现

body
<body>
    <div class="header">header</div>
    <div class="container">
        <div class="middle">middle</div>
        <div class="left">left</div>
        <div class="right">rigth</div>
    </div>
    <div class="footer">footer</div>
</body>
style
        * {
            margin: 0;
            padding: 0;
        }
        .header,
        .footer{
            height: 100px;
            background-color: cadetblue;
        }
        .footer{
            clear:both;
        }
        .container{
            padding-left: 200px;
            padding-right: 200px;
            min-width: 200px;
        }
        .container div{
            position: relative;
            float: left;
            height: 300px;
        }
        .middle{
            background-color: antiquewhite;
            width: 100%;
        }
        .left{
            width: 200px;
            margin-left: -100%;
            left: -200px;
            background-color: brown;

        }
        .right{
            width: 200px;
            margin-left: -200px;
            left: 200px;
            background-color:cornflowerblue;
        }

关键在于负margin,relative和padding的混合使用

float的第二种实现

也可以通过把middle标签放在后面,通过将left和right分别左右浮动使middle掉到中间。同样需要清除浮动。

双飞翼布局

body
<body>
    <div class="header">header</div>
    <div class="container">
        <div class="middle">
            <div class="middle-in">middle</div>
        </div>
        <div class="left">left</div>
        <div class="right">rigth</div>
    </div>
    <div class="footer">footer</div>
</body>
style
        * {
            margin: 0;
            padding: 0;
        }
        .header,
        .footer{
            height: 100px;
            background-color: cadetblue;
        }
        .footer{
            clear:both;
        }
        .container{
            min-width: 200px;
        }
        .container div{
            float: left;
            height: 300px;
        }
        .middle{
            background-color: antiquewhite;
            width: 100%;
        }
        .left{
            width: 200px;
            margin-left: -100%;
            background-color: brown;

        }
        .right{
            width: 200px;
            margin-left: -200px;
            background-color:cornflowerblue;
        }
        .middle-in{
            padding-left: 200px;
            padding-right: 200px;
        }

区别

圣杯布局的padding加在外部容器(即container)上;
双飞翼布局是通过缩小middle的width(内部套一层div或者怪异模式的方式)腾出空间

posted @ 2022-10-24 20:47  badpear  阅读(54)  评论(0)    收藏  举报