在Web布局中时常碰到两端对齐的需求。在Flexbox布局中,时常在Flex容器中显式设置justify-content的值:

    1. .flex__container {
    2. display: flex;
    3. flex-wrap: wrap;
    4. justify-content: space-between;
    5. width: 100%;
    6. }

    但在末尾行,如果和前面行的个数不相同(Flex项目)就会出现下图这样的效果:

    两端对齐 - 图1

    像上图这样的效果,并不是我们所需要的,因为我们希望在最后一行的Flex项目不足够排列满一行时,希望Flex项目一个紧挨一个的排列:

    两端对齐 - 图2

    在Flexbox要实现上图这样的效果,只需要在Flex容器中添加一个伪元素:

    1. .flex__container::after {
    2. content: "";
    3. display: flex;
    4. flex: 0 1 32vw;
    5. }

    注意,伪元素的flex-basis建议设置的和卡片的flex-basis(或宽度)等同。这个时候你将看到像下面这样的示例:

    两端对齐 - 图3

    Demo(https://codepen.io/airen/embed/QWymaam)

    不过这种方式也不是最佳的方式,当末尾行的个数不只少一个时,就会出现下图这样的效果:

    两端对齐 - 图4

    面对这样的场景,我们需要给Flex容器添加额外的空标签元素:

    占位符元素数量 = 每行最大的列数 - 2

    1. // 4 * 4 --- 4 * 2
    2. function(list){
    3. return Math.ceil(list.length / 4) * 4 - list.length
    4. }