• 技术文章 >web前端 >css教程

    css实现等高布局有哪些方式

    王林王林2020-03-24 10:48:59转载1352

    什么是等高布局?

    指在同一个父容器中,子元素高度相等的布局。

    从等高布局实现方式来说分为两类:

    1、伪等高

    子元素高度差依然存在,只是视觉上给人感觉就是等高。

    2、真等高

    子元素高度相等。

    伪等高实现方式:

    通过负margin和Padding实现

    真等高实现方式:

    1、table

    2、absoult

    3、flex

    4、grid

    5、js

    (推荐教程:CSS入门教程

    伪等高之-负margin和padding

    主要利用负margin来实现,如下:

     <div class="layout parent">
            <div class="left"><p>left</p></div>
            <div class="center">
                <p>我是中间部分的内容</p>
                <p>我是中间部分的内容</p>
                <p>我是中间部分的内容</p>
                <p>我是中间部分的内容</p>
            </div>
            <div class="right"><p>right</p></div>
            <div style="clear: both;">11111111111</div>
        </div>
    .parent{
        position: relative;
        overflow:hidden;
        color: #efefef;
    }
    .center,
    .left,
    .right {
        box-sizing: border-box;
        float: left;
    }
    .center {
        background-color: #2ECC71;
        width: 60%;
    }
    
    .left {
        width: 20%;
        background-color: #1ABC9C;
    }
    .right {
        width: 20%;
        background-color: #3498DB;
    }
    .left,
    .right,
    .center  {
        margin-bottom: -99999px;
        padding-bottom: 99999px;
    }

    真实等高之 - table布局

      <div class="layout parent">
            <div class="left"><p>left</p></div>
            <div class="center">
                <p>我是中间部分的内容</p>
                <p>我是中间部分的内容</p>
                <p>我是中间部分的内容</p>
                <p>我是中间部分的内容</p>
            </div>
            <div class="right"><p>right</p></div>
            <div style="clear: both;">11111111111</div>
        </div>
        .parent{
            position: relative;
            display: table;
            color: #efefef;
        }
        .center,
        .left,
        .right {
            box-sizing: border-box;
            display: table-cell
        }
        .center {
            background-color: #2ECC71;
            width: 60%;
        }
    
        .left {
            width: 20%;
            background-color: #1ABC9C;
        }
        .right {
            width: 20%;
            background-color: #3498DB;
        }

    真实等高之 - absolute

        <div class="layout parent">
            <div class="left"><p>left</p> </div>
            <div class="center">
                <p>我是中间部分的内容</p>
                <p>我是中间部分的内容</p>
                <p>我是中间部分的内容</p>
                <p>我是中间部分的内容</p>
            </div>
            <div class="right"><p>right</p></div>
        </div>
       .parent{
            position: absolute;
            color: #efefef;
            width:100%;
            height: 200px;
        }
    
        .left,
        .right,
        .center {
            position: absolute;
            box-sizing: border-box;
            top:0;
            bottom:0;
        }
        .center {
            background-color: #2ECC71;
            left: 200px;
            right: 300px;
        }
    
        .left {
            width: 200px;
            background-color: #1ABC9C;
        }
        .right {
            right:0;
            width: 300px;
            background-color: #3498DB;
        }

    真实等高之 - flex

    .parent{
        display: flex;
        color: #efefef;
        width:100%;
        height: 200px;
    }
    
    .left,
    .right,
    .center {
        box-sizing: border-box;
        flex: 1;
    }
    .center {
        background-color: #2ECC71;
    }
    .left {
        background-color: #1ABC9C;
    }
    .right {
        background-color: #3498DB;
    }
    <div class="layout parent">
        <div class="left"><p>left</p> </div>
        <div class="center">
            <p>我是中间部分的内容</p>
            <p>我是中间部分的内容</p>
            <p>我是中间部分的内容</p>
            <p>我是中间部分的内容</p>
        </div>
        <div class="right"><p>right</p></div>
    </div>

    真实等高之 - grid

        .parent{
            display: grid;
            color: #efefef;
            width:100%;
            height: 200px;
            grid-template-columns: 1fr 1fr 1fr;
        }
    
        .left,
        .right,
        .center {
            box-sizing: border-box;
        }
        .center {
            background-color: #2ECC71;
        }
        .left {
            background-color: #1ABC9C;
        }
        .right {
            background-color: #3498DB;
        }
    <div class="layout parent">
        <div class="left"><p>left</p> </div>
        <div class="center">
            <p>我是中间部分的内容</p>
            <p>我是中间部分的内容</p>
            <p>我是中间部分的内容</p>
            <p>我是中间部分的内容</p>
        </div>
        <div class="right"><p>right</p></div>
    </div>

    真实等高之 - js

    获取所有元素中最高列,然后再去比对再进行修改

        <div class="layout parent">
            <div class="left"><p>left</p> </div>
            <div class="center">
                <p>我是中间部分的内容</p>
                <p>我是中间部分的内容</p>
                <p>我是中间部分的内容</p>
                <p>我是中间部分的内容</p>
            </div>
            <div class="right"><p>right</p></div>
        </div>
        .parent{
            overflow: auto;
            color: #efefef;
        }
        .left,
        .right,
        .center {
            float: left;
        }
        .center {
            width: 60%;
            background-color: #2ECC71;
        }
        .left {
            width: 20%;
            background-color: #1ABC9C;
        }
        .right {
            width: 20%;
            background-color: #3498DB;
        }
         // 获取最高元素的高度
        var nodeList = document.querySelectorAll(".parent > div");
        var arr = [].slice.call(nodeList,0);
        var maxHeight = arr.map(function(item){
            return item.offsetHeight
        }).sort(function(a, b){
            return a - b;
        }).pop();
        arr.map(function(item){
            if(item.offsetHeight < maxHeight) {
                item.style.height = maxHeight + "px";
            }
        });

    如图:

    66b492e32f2ab952a1cf914ddf01fdc.png

    相关视频教程推荐:css视频教程

    以上就是css实现等高布局有哪些方式的详细内容,更多请关注php中文网其它相关文章!

    声明:本文转载于:脚本之家,如有侵犯,请联系admin@php.cn删除
    专题推荐:css 等高布局
    上一篇:css中有哪些方法可以实现垂直居中 下一篇:css如何使用伪元素清除浮动
    20期PHP线上班

    相关文章推荐

    精选22门好课,价值3725元,开通VIP免费学习!• css如何实现图片堆叠效果• css如何实现表单验证功能• css实现背景图满屏效果• css中position属性有哪些用法
    1/1

    PHP中文网