面试JavaScript

实现三栏布局的8种方式

2021-11-30  本文已影响0人  猫老板的豆

三栏布局:两侧宽度固定,中间宽度自适应的

三栏布局

公共样式

* {
    padding: 0;
    margin: 0;
    height: 100%;
}

.left {
    width: 200px;
    background-color: aqua;
}

.right {
    width: 200px;
    background-color: burlywood;
}

.main {
    background-color: chartreuse;
}

1. 浮动布局

左右模块各自向左右浮动,并设置中间模块的 margin 值使中间模块宽度自适应

<body>
    <style>
        .left {
            float: left;
        }

        .right {
            float: right;
        }

        .main {
            margin: 0 200px;
        }
    </style>
    
    <div class="left">Left</div>
    <div class="right">Right</div>
    <div class="main">Main</div>
</body>

2. 定位布局

<body>
    <style>
        .left,
        .right {
            position: absolute;
            top: 0;
        }

        .left {
            left: 0;
        }

        .right {
            right: 0;
        }

        .main {
            margin: 0 200px;
        }
    </style>

    <!-- 可以把Main提前,使主要内容可以优先加载 -->
    <div class="main">Main</div>
    <div class="left">Left</div>
    <div class="right">Right</div>
</body>

3. flex布局

<body>
    <style>
        .container {
            display: flex;
        }

        .main {
            flex: 1;
            /* flex: 1 1 auto; */
        }
    </style>

    <div class="container">
        <div class="left">Left</div>
        <div class="main">Main</div>
        <div class="right">Right</div>
    </div>
</body>

4. 表格布局

<body>
    <style>
        .container {
            display: table;
            width: 100%;
        }

        .container>div {
            display: table-cell;
        }
    </style>

    <div class="container">
        <div class="left">Left</div>
        <div class="main">Main</div>
        <div class="right">Right</div>
    </div>
</body>

5. 网格布局

<body>
    <style>
        .container {
            display: grid;
            width: 100%;
            grid-template-columns: 200px auto 200px;
        }
    </style>

    <div class="container">
        <div class="left">Left</div>
        <div class="main">Main</div>
        <div class="right">Right</div>
    </div>
</body>

6. calc函数布局

<style>
    .container {
        width: 100%;
    }
    .container>div {
        float: left;
    }
    .main {
        width: calc(100% - 400px);
    }
</style>
<div class="container">
    <div class="left">Left</div>
    <div class="main">Main</div>
    <div class="right">Right</div>
</div>

7. 圣杯布局

利用的是浮动元素 margin 负值的应用

<body>
    <style>
        body {
            margin: 0 200px;
        }

        div {
            float: left;
        }

        .left {
            margin-left: -100%;
            position: relative;
            left: -200px;
        }

        .right {
            margin-right: -200px;
        }

        .main {
            width: 100%;
        }
    </style>

    <!-- 注意顺序 -->
    <div class="main">Main</div>
    <div class="left">Left</div>
    <div class="right">Right</div>
</body>

8. 双飞翼布局

与圣杯布局很像,但多了一层div嵌套

<body>
    <style>
        body>div {
            float: left;
        }

        .left {
            margin-left: -100%;
        }

        .right {
            margin-left: -200px;
        }

        .main {
            width: 100%;
        }

        .inner {
            margin: 0 200px;
        }
    </style>

    <div class="main">
        <div class="inner">
            Main
        </div>
    </div>
    <div class="left">Left</div>
    <div class="right">Right</div>
</body>
上一篇 下一篇

猜你喜欢

热点阅读