美文网首页
CSS等比多列布局的方法

CSS等比多列布局的方法

作者: vinterx | 来源:发表于2019-04-20 00:08 被阅读0次

一、float + 百分比

        body,html,ul,li{
            padding: 0;
            margin: 0;
        }
        ul{
            list-style: none;
            overflow: hidden;
        }
        li{
            width: 30.6666%;
            height: 50px;
            margin: 0 2% 10px 0;
            float: left;
            /*margin-bottom: 10px;*/
            background: red;

        }
        li:nth-of-type(3n+1){
            margin-left: 2%;
        }

<body>
    <ul>
        <li></li>
        <li></li>
        <li></li>
        <li></li>
        <li></li>
        <li></li>
        <li></li>
        <li></li>
        <li></li>   
        <li></li>
        <li></li>
    </ul>
</body>

优点:
简单快速;宽度间距可控制。

缺点:
需要知道具体列数从而设置对应的百分比宽度和间距;脱离文档流需要清除浮动。

二、内联块元素(inline-block) + 百分比

        body,html,ul,li{
            padding: 0;
            margin: 0;
        }
        ul{
            list-style: none;   
            font-size: 0;       
        }
        li{
            width: 30.6666%;
            height: 50px;
            margin: 0 2% 10px 0;
            display: inline-block;
            background: red;

        }
        li:nth-of-type(3n+1){
            margin-left: 2%;
        }

优点:
传统方法,所有浏览器均支持,宽度间距可控制大小。

缺点:
需要对父级元素设置文字大小为0,否则会有误差,布局失效;需要知道具体列数。

三、flex + px

        body,html,ul,li{
            padding: 0;
            margin: 0;
        }
        ul{
            list-style: none;
            display: flex;
            align-items: center;
            justify-content: space-between;
            flex-wrap: wrap;
        }
        li{
            width: 200px;
            height: 50px;
            background: red;
            margin: 0 10px 20px 10px;

        }
        .empty{
            width: 200px;
            margin: 0 10px;
            height: 0;
        }


    <ul>
        <li></li>
        <li></li>
        <li></li>
        <li></li>
        <li></li>
        <li></li>
        <li></li>   
        <li class="empty"></li>
        <li class="empty"></li>
    </ul>

优点:
根据空元素的数目可动态支持最多n(空元素)+2个等比列数;不脱离文档流。

缺点:
页面宽度变化时,间距大小不可控。

四、flex + 百分比

        body,html,ul,li{
            padding: 0;
            margin: 0;
        }
        ul{
            list-style: none;
            display: flex;
            align-items: center;
            justify-content: space-between;
            flex-wrap: wrap;
        }
        li{
            width: 30%;
            height: 50px;
            background: red;
            margin: 0 0 10px 0;

        }

    <ul>
        <li></li>
        <li></li>
        <li></li>
        <li></li>
        <li></li>
        <li></li>
        <li></li>   
        <li></li>
        <li></li>
    </ul>

优点:
宽度间距可控制;根据元素总宽度,浏览器根据剩余宽度自动分配间距宽度;不脱离文档流,简单快速。\color{red}{推荐}

缺点:
需要知道具体的列数从而设置宽度大小;低级浏览器需要做兼容。

总结
1、具体列数 :使用flex+百分比、float+百分比和inline-block+百分比布局,针对目前大部分浏览器均支持flex情况,flex+百分比布局最优。
2、n列数:使用flex+px布局,空元素n(即高度为0)数目越多,支持的列数越多。

相关文章

  • CSS等比多列布局的方法

    一、float + 百分比 优点:简单快速;宽度间距可控制。 缺点:需要知道具体列数从而设置对应的百分比宽度和间距...

  • CSS二列&三列布局

    本篇文章主要介绍本人最近在CSS学习中总结出的常用的二列&三列布局的几种方法 二列&三列布局: 二列布局的特征通常...

  • DIV+CSS页面基本布局总结

    前言 DIV+CSS布局是前端最为基础的知识,而现在网络上最为普遍的有一列,两列,三列,窗格式布局以及自适应布局等...

  • CSS之浮动元素影响清除方法归纳

    前言 浮动是CSS的三种基本定位机制之一,在现在网页的DIV+CSS基本布局中,无论是两列布局,三列布局,多列布局...

  • css常见布局(二)

    采用flex实现两列,三列等多列的布局 一、两列布局 二、三列布局

  • 前端面试题------float的原理及在平时工作中遇到的flo

    float是css布局中重要的属性可以实现多列布局,定位等,float与绝对定位一样,都可以实现定位布局,但是fl...

  • Css float属性的一些特点

    Css float属性的一些特点 css布局中float布局是常用的布局方式,用于实现横向多列布局。这个时候我们就...

  • DIV+CSS对SEO网站优化好处有哪些?

    div+css布局是一种网页的布局方法,是目前应用最广泛的网页布局方法。div css布局是把网页用div+css...

  • CSS3多列布局

    定义列数column-count 在CSS3的多列布局中,我们可以使用column-count属性指定多列布局的列...

  • 2020-06-12 面试

    笔试题 1.请用 CSS 浮动,绝对定位,flex 布局实现两列布局,要求左列宽度 200px ,右列占满剩余空间...

网友评论

      本文标题:CSS等比多列布局的方法

      本文链接:https://www.haomeiwen.com/subject/jqlhgqtx.html