• CSS实现多列等高布局的3种方法


    前言

    多列等高是什么意思?

    即需要每个列的高度能与最高的那个列等齐

    比如下图,左右2列不会随着中间列高度的增高而随之增高

     

    要达到的效果

    方法一:使用flex

    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="UTF-8">
        <meta name="author" content="tutu">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>实现多列等高布局的三种方法-flex</title>
    </head>
    <style>
        body,ul {
            list-style: none;
            padding: 0;
            margin: 0;
        }
    
        ul li {
            background: #000;
        }
    
        ul li p {
            padding: 10px;
            margin: 0;
            color: #fff;
        }
    
        /* 关键代码 */
        .test-1 ul {
            display: flex;
        }
    
        .test-1 li {
            box-sizing: content-box;
            width: 33.3%;
            text-align: center;
            border: 1px solid red;
        }
    </style>
    
    <body>
        <div id="app"></div>
        <div class="test-1">
            <ul>
                <li>
                    <p>
                        床前明月光,疑是地上霜,举头望明月,低头思故乡
                    </p>
                </li>
                <li>
                    <p>
                        床前明月光,疑是地上霜,举头望明月,低头思故乡
                    </p>
                </li>
                <li>
                    <p>
                        床前明月光,疑是地上霜,举头望明月,低头思故乡
                    </p>
                </li>
            </ul>
        </div>
    </body>
    
    </html>

    方法二:使用display:table属性

    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="UTF-8">
        <meta name="author" content="tutu">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>实现多列等高布局的三种方法-flex</title>
    </head>
    <style>
        body,ul {
            list-style: none;
            padding: 0;
            margin: 0;
        }
    
        ul li {
            background: #000;
        }
    
        ul li p {
            padding: 10px;
            margin: 0;
            color: #fff;
        }
    
        /* 关键代码 */
        .test-1 ul {
            display: table;
        }
    
        .test-1 li {
            box-sizing: content-box;
            display: table-cell;
            width: 33.3%;
            text-align: center;
            border: 1px solid red;
        }
    </style>
    
    <body>
        <div id="app"></div>
        <div class="test-1">
            <ul>
                <li>
                    <p>
                        床前明月光,疑是地上霜,举头望明月,低头思故乡
                    </p>
                </li>
                <li>
                    <p>
                        床前明月光,疑是地上霜,举头望明月,低头思故乡
                    </p>
                </li>
                <li>
                    <p>
                        床前明月光,疑是地上霜,举头望明月,低头思故乡
                    </p>
                </li>
            </ul>
        </div>
    </body>
    
    </html>

    方法三:使用margin和padding

    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="UTF-8">
        <meta name="author" content="tutu">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>实现多列等高布局的三种方法-flex</title>
    </head>
    <style>
        body,ul {
            list-style: none;
            padding: 0;
            margin: 0;
        }
    
        ul li {
            background: #000;
        }
    
        ul li p {
            padding: 10px;
            margin: 0;
            color: #fff;
        }
    
        /* 关键代码 */
        .test-1 ul {
            overflow: hidden;
        }
    
        .test-1 li {
            box-sizing: border-box;
            float: left;
            margin-bottom: -9999px;
            padding-bottom: 9999px;
            width: 33.3%;
            text-align: center;
            border: 1px solid red;
        }
    </style>
    
    <body>
        <div id="app"></div>
        <div class="test-1">
            <ul>
                <li>
                    <p>
                        床前明月光,疑是地上霜,举头望明月,低头思故乡
                    </p>
                </li>
                <li>
                    <p>
                        床前明月光,疑是地上霜,举头望明月,低头思故乡
                    </p>
                </li>
                <li>
                    <p>
                        床前明月光,疑是地上霜,举头望明月,低头思故乡
                    </p>
                </li>
            </ul>
        </div>
    </body>
    
    </html>
  • 相关阅读:
    洛谷 P4160 [SCOI2009]生日快乐 题解
    洛谷 P1041 传染病控制 题解
    洛谷 P3154 [CQOI2009]循环赛 题解
    洛谷 P1144 最短路计数 题解
    洛谷 P2296 寻找道路 题解
    洛谷 P1514 引水入城 题解
    洛谷 P2661 信息传递 题解
    洛谷 P3958 奶酪 题解
    洛谷 P3501 [POI2010]ANT-Antisymmetry 题解
    【LGR-069】洛谷 2 月月赛 II & EE Round 2 Div.2 A-C题解
  • 原文地址:https://www.cnblogs.com/tu-0718/p/14475569.html
Copyright © 2020-2023  润新知