I want to see the effect

In a side-by-side layout with a large number of “variable width” elements, the above is the best layout we want, but the FlexBox layout is not quite the same as the bullet, so we need to make a few small changes with the FlexBox.

CSS ready-made layout

Flex layout, with the ability to divide layouts equally, as shown

The problem

But we don’t want the bottom to be so evenly divided, we want it to be aligned with the previous row

plan

In fact, it is easy to implement by adding some hidden elements with equal width but zero height. As shown in figure:

The number of empty elements should not be less than the maximum number of elements in a single row. Finally, we can hide empty

.empty {
    visibility: hidden; 
}Copy the code

Full demo code

【JSFiddle 】 jsfiddle.net/zwwill/43qn…

<html>
<head>
    <meta charset="UTF-8">
    <title>Side by side and equally divided, single row on the left most neat layout</title>
    <style type="text/css">
        * {
            margin: 0;
            padding: 0;
        }
        .main {
            display: flex;
            width: 1000px;
            flex-flow: row wrap;
            justify-content: space-between;
            margin: 50px auto;
            background-color: #ccc;
            align-content: baseline;
        }
        .main span {
            width: 132px;
            height: 200px;
            display: inline-block;
            background-color: # 666;
            margin: 4px;
        }
        .main .emp{
            height: 0;
            border: none;
            margin-top: 0;
            margin-bottom: 0;
            visibility: hidden;
        }
    </style>
</head>
<body>
    <div class="main">
        <span style="">1</span>
        <span style="">2</span>
        <span style="">3</span>
        <span style="">4</span>
        <span style="">5</span>
        <span style="">6</span>
        <span style="">7</span>
        <span style="">8</span>
        <span style="">9</span>
        <span style="">10</span>
        <span style="">11</span>
        <span style="">12</span>  
        <span class="emp" >empty</span>
        <span class="emp" >empty</span>
        <span class="emp" >empty</span>
        <span class="emp" >empty</span>
        <span class="emp" >empty</span>
        <span class="emp" >empty</span>
        <span class="emp" >empty</span>
        <span class="emp" >empty</span>
        <span class="emp" >empty</span>
    </div>
</body></html>Copy the code

And finally look at the effect