抱歉,我什至不知道如何用适当的标题来描述我的问题,或者不知道这个问题是否愚蠢。但这是我的问题:我有一些网格形状,例如1x1、2x1、2x2和1x2框,它们可能会随机出现而没有特定的顺序,我希望这些网格在我的页面上平铺。
我有的:



<html>
    <style>
        .container
        {
            display:flex;
            flex-direction:row;
            flex-wrap: wrap;
        }
        .b11
        {
            background-color:#1b6d85;
            width:100px;
            height:100px;
            border: 1px solid #fff;
        }
        .b21
        {
            background-color:#8a6d3b;
            width:200px;
            height:100px;
            border: 1px solid #fff;
        }
        .b22
        {
            background-color:#2aabd2;
            width:200px;
            height:200px;
            border: 1px solid #fff;
        }
    </style>
    <body>
        <div class="container">
            <div class="b11"></div>
            <div class="b21"></div>
            <div class="b11"></div>
            <div class="b21"></div>
            <div class="b22"></div>
            <div class="b21"></div>
            <div class="b11"></div>
            <div class="b21"></div>
            <div class="b21"></div>
            <div class="b11"></div>
            <div class="b21"></div>
            <div class="b11"></div>
            <div class="b21"></div>
        </div>
    </body>
</html>





结果是(在任意屏幕宽度下,例如760px):
html - 自动填充垂直间隙的响应式柔性版面?-LMLPHP

由于项目之间有一个2x2的盒子,所以整行都留有空隙。是否可以将这些盒子尽可能紧密地放置(例如从左到右,从上到下堆叠在一起)而没有任何行距?

html - 自动填充垂直间隙的响应式柔性版面?-LMLPHP

最佳答案

我已经尝试过您的代码,并且有解决方案。您需要使用flex:1;因为您所有的物品都会对齐。例如:



.container
        {
            display:flex;
            flex-direction:row;
            flex-wrap: wrap;
        }
        .container > * {
            flex: 1;
        }
        .b11
        {
            background-color:#1b6d85;
            width:100px;
            height:100px;
            border: 1px solid #fff;
        }
        .container .b21 {
            flex: 2;
        }
        .b21
        {
            background-color:#8a6d3b;
            width:200px;
            height:100px;
            border: 1px solid #fff;
        }
        .b22
        {
            background-color:#2aabd2;
            width:200px;
            height:200px;
            border: 1px solid #fff;
        }

<html>
<head></head>
    <body>
        <div class="container">
            <div class="b11"></div>
            <div class="b21"></div>
            <div class="b11"></div>
            <div class="b21"></div>
            <div class="b22"></div>
            <div class="b21"></div>
            <div class="b11"></div>
            <div class="b21"></div>
            <div class="b21"></div>
            <div class="b11"></div>
            <div class="b21"></div>
            <div class="b11"></div>
            <div class="b21"></div>
        </div>
    </body>
</html>





你可以试试看

关于html - 自动填充垂直间隙的响应式柔性版面?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54192779/

10-11 08:12