美文网首页
css 多行二端对齐解决方案

css 多行二端对齐解决方案

作者: hc3001 | 来源:发表于2018-05-12 17:25 被阅读0次
    一、前言

    对于前端,多行二端对齐是个常见的需求,也非常简单,但多加几个限制条件就比较有意思
    了。一个是完美的二端对齐(上端有个border做参照)、二个兼容ie9、三是有margin。

    二、对于第一个,不考虑ie,有margin,自然是flex,示例代码:
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>多行二端对齐</title>
        <style>
             .main1 {
                width: 50%;
                margin: 0 auto;
                margin-top: 100px;
                border-top: 1px solid black;
                overflow: hidden;
            }
            .container1 {
                display: flex;
                justify-content: flex-start;
                flex-wrap: wrap;
                margin-top: 20px;
                margin-right: -3%;
            }
            .item1 {
                /*box-sizing: border-box;*/
                flex: 0 0 22%;
                display: inline-block;
                margin-top: 1%;
                margin-right: 3%;
                height: 100px;
                background-color: blue;
            }
        </style>
    </head>
    <body>
    <div class="main1">
        <div class="container1">
            <div class="item1"></div>
            <div class="item1"></div>
            <div class="item1"></div>
            <div class="item1"></div>
            <div class="item1"></div>
            <div class="item1"></div>
            <div class="item1"></div>
        </div>
    </div>
    </body>
    </html>
    

    注意事项:单行有右边距可以直接用justity-content:space-between。但如果itme1超过一行并且数量不定,在最后一行出现item1不满一行的情况就不能用了。
    关键代码:.container1 { margin-right: -3%; },利用margin百分比相对于父元素的特性。

    二、考虑ie,有margin,示例代码:
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>二端对齐</title>
        <style>
            .item {
                display: inline-block;
                width: 22%;
                height: 100px;
                background-color: pink;
                margin: 0 3% 1% 0;
            }
            .main {
                width: 50%;
                margin: 0 auto;
                margin-top: 100px;
                border-top: 1px solid black;
                overflow: hidden;
            }
            .container {
                font-size: 0;
                margin-top: 20px;
                margin-right: -3%;
            }
        </style>
    </head>
    <body>
    <div class="main">
        <div class="container">
            <div class="item"></div>
            <div class="item"></div>
            <div class="item"></div>
            <div class="item"></div>
            <div class="item"></div>
            <div class="item"></div>
            <div class="item"></div>
        </div>
    </div>
    </body>
    </html>
    

    此方法和第一种flex没有本质的区别,但是具有兼容性。

    相关文章

      网友评论

          本文标题:css 多行二端对齐解决方案

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