当前位置:首页 > html教程 > 正文内容

css实现等高布局有哪些方式_html5教程,css,等高布局

搜教程4年前 (2020-03-24)html教程153

什么是等高布局?

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

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

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";
        }
    });

如图:

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

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

扫描二维码推送至手机访问。

版权声明:本文由搜教程网发布,如需转载请注明出处。

本文链接:https://www.sojiaocheng.cn/17418.html

标签: css等高布局
分享给朋友:

“css实现等高布局有哪些方式_html5教程,css,等高布局” 的相关文章

跨列column-span属性详解【html5教程】,column-span,column-span属性

跨列column-span属性详解【html5教程】,column-span,column-span属性

本篇文章给人人带来的内容是关于跨列column-span属性详解,有肯定的参考价值,有须要的朋侪能够参考一下,愿望对你有所协助。 跨列,类似于我们在HTML入门教程中学过的合并列colspan属性 。在CSS3多列规划时,有时刻我们要完成跨列结果,就要用到column-span属性了。 语法...

css怎样让div居中?css完成div居中的要领【html5教程】,css,div居中,方法

css怎样让div居中?css完成div居中的要领【html5教程】,css,div居中,方法

怎样让div程度居中?div怎样居中?置信很多人都邑如许的疑问,本篇文章就解说一下css怎样让div居中?以及怎样完成div居中的要领。 当我们阅读网页的时刻,会发明平常网站的主体都是在页面的中心,而且居中显现在阅读器中的正中央,只需我们完成div居中前提和阅读器居中前提保留一致。 假如我们...

CSS编码递次是什么?CSS编码递次详解【html5教程】,CSS编码顺序,CSS编码

CSS编码递次是什么?CSS编码递次详解【html5教程】,CSS编码顺序,CSS编码

本篇文章给人人带来的内容是关于CSS编码递次是什么?CSS编码递次详解,有肯定的参考价值,有须要的朋侪能够参考一下,愿望对你有所协助。 CSS编码递次研讨末了定义的 CSS 款式将会掩盖在其之前定义的一切已存在、或与之争执的款式,比方下面这个例子: 示例代码 p { color: re...

怎样应用CSS3完成input 输入框动画款式库【html5教程】,CSS3,实现input 输入框动画

本篇文章给人人带来的内容是关于怎样应用CSS3完成input 输入框动画款式库,有肯定的参考价值,有须要的朋侪能够参考一下,愿望对你有所协助。 享一个用纯 CSS3 完成的,美丽的 input 输入框动画款式库-Text input love。 点击每一个输入框都用差别的动画结果,一直显现标...

css怎样指定样式表运用的字符编码【html5教程】,css,@charset,字符编码

css怎样指定样式表运用的字符编码【html5教程】,css,@charset,字符编码

css指定样式表运用的字符编码的要领很简单,css的@charset划定规矩就是用来指定样式表运用的字符编码的。下面我们来相识一下@charset划定规矩的运用要领,怎样指定样式表运用的字符编码。 起首我们来相识一下什么是字符集和编码? 字符集是誊写体系中运用的字母和标记的鸠合。比方,A...

怎样设置背景图片不跟着文本内容的转动而转动【html5教程】,background-attachement

怎样设置背景图片不跟着文本内容的转动而转动【html5教程】,background-attachement

我们能够经由过程background-attachement属性中的fixed值来牢固图象,使它不跟着文本内容的转动而转动 background-attachement属性主如果定义背景图象是不是随内容转动或者是坚持牢固 它的属性值为 fixed:示意背景图象在浏览器窗口中坚持牢固,并...