圣杯布局和双飞翼布局

115 阅读1分钟

OIP-C.jfif

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

圣杯布局和双飞翼布局实现的效果其实都是三栏布局,就是左右是固定的,中间的宽度是自适应的,两个的主要的区别是,防止左右两栏遮挡中间内容的方式不同。

圣杯布局是给整个container加上padding-left和padding-right,然后再让left和right来分别填充padding-left和padding-right,这样来实现避免遮挡。

双飞翼布局是在center这个div里面再加一个content的div,给这个content加上margin-left和margin-left,这样再让left和right来填充margin-left和margin-right。

圣杯布局的代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        .container{
            height: 300px;
            padding-left: 200px;
            padding-right: 300px;
            background-color: aqua;
        }
        .container #column{
            height: 300px;
            position: relative;
            float: left;
        }
        .left{
            background-color: brown;
            width: 200px;
            right:200px;
            margin-left: -100%;
        }
        .right{
            background-color: chartreuse;
            width: 300px;
            margin-left: -300px;
            right:-300px;
        }
        .middle{
            width: 100%;
        }

    </style>
</head>
<body>
    <div class="container">
        <div class="middle" id="column">#middle</div>
        <div class="left" id="column">#left</div>
        <div class="right" id="column">#right</div>
    </div>
</body>
</html>

双飞翼布局

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        #container{
            height: 300px;
            background-color: chartreuse;
        }
        #container .column{
            height: 300px;
            float: left;
            position: relative;
        }
        #center{
            width: 100%;
            background-color: chocolate;
        }
        #center #content{
            padding-left: 200px;
            padding-right: 300px;
        }
        #left{
            background-color: rgb(0, 139, 127);
            width: 200px;
            margin-left: -100%;
        }
        #right{
            background-color: darkred;
            width: 300px;
            margin-left: -300px;
        }
    </style>
</head>
<body>
    <div id="container">
        <div id="center" class="column">
            <div id="content">
                content
            </div>
        </div>
        <div id="left" class="column">left</div>
        <div id="right" class="column">right</div>
    </div>
</body>
</html>