CSS实现三列布局

作者:Jasmine - 2018年12月27日

三列布局指的是两边两列定宽,中间的宽度自适应。


常用三种方法:


  • 定位

  • 浮动

  • 弹性盒布局


定位方式


最直观和容易理解的一种方法,左右两栏选择绝对定位,固定于页面的两侧,中间的主体选择用margin确定位置

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>定位方法创建三列布局</title>
    <style>
    *{
        margin: 0;
        padding: 0;
    }
    .left{
        width: 200px;
        height: 500px;
        background-color: yellow;
        position: absolute; /* 绝对定位,使位置固定 */
        left: 0;
        top: 0;
    }
    .center{
        height: 600px;
        background-color: purple;
        margin: 0 300px 0 200px;   /* 通过外边距确定宽度 */
    }
    .right{
        width: 300px;
        height: 500px;
        background-color: red;
        position: absolute; /* 绝对定位,使位置固定 */
        right: 0;
        top: 0;
    }

    </style>
</head>
<body>
    <div class="left">Left</div>
    <div class="center">Center</div>
    <div class="right">Right</div>
</body>
</html>

效果:

浮动方法

让左右两边部分浮动,脱离文档流后对中间部分使用margin来自适应

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>浮动法创建三列布局</title>
    <style>
        *{
            margin: 0;
            padding: 0;
        }
        .left{
        width: 200px;
        height: 500px;
        background-color: yellow;
        float: left;
    }
    .center{
        height: 600px;
        background-color: purple;
        margin: 0 300px 0 200px;
        min-width: 100px;  /* 最小宽度,防止浏览器缩小后中间部分被隐藏 */
    }
    .right{
        width: 300px;
        height: 500px;
        background-color: red;
        float: right;
    }
    </style>
</head>
<body>
    <div class="left">Left</div>
    <div class="right">Right</div>
    <div class="center">Center</div>  <!-- 左右部分脱离文档流,中间部分平铺 -->
</body>
</html>


弹性盒布局


使用容器包裹三栏,并将容器的display设置为flex,左右两部分宽度设置为固定,中间flex设置为1,左右两边的值固定,所以中间的自适应

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>弹性盒子创建三列布局</title>
    <style>
        *{
            margin: 0;
            padding: 0;
        }
        .container{
            display: flex;
        }
        .left{
        width: 200px;
        height: 500px;
        background-color: yellow;
    }
    .center{
        height: 600px;
        flex: 1;
        background-color: purple;
    }
    .right{
        width: 300px;
        height: 500px;
        background-color: red;
    }
    </style>
</head>
<body>
    <div class="container">
        <div class="left">Left</div>
        <div class="center">Center</div>  
        <div class="right">Right</div>
    </div>
</body>
</html>


来源于: https://www.cnblogs.com/tynam/p/9827131.html

本文作者: Jasmine

本文链接: https://www.jianbaizhan.com/article/622

版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 3.0 许可协议。转载请注明出处!


 请勿发布不友善或者负能量的内容。审查将对发布广告等违规信息进行处罚!