flex布局怎么再设置子元素两侧对其的情况下设置最后一行左对齐

flex布局怎么再设置子元素两侧对其的情况下设置最后一行左对齐?

子元素个数和父元素的宽度不定,本来是通过flex布局设置justify-content: space-between,但是如果最后一行元素不能填满的话,就会居中对齐,子元素中间会出现大片空白。后面想过justify-content: flex-start,但是这样的话因为父元素宽度不定,会出现右侧出现一定的空白。请大家帮看看怎么处理,谢谢~

相关代码

    <style type="text/css">
        .list-area {
            display: flex;
            flex-wrap: wrap;
            align-content: flex-start;
            // 下面这个是第一个结果的
            justify-content: space-between;
            // 下面这个是第二个结果的
            // justify-content: flex-start;
        }
        .list-item {
            width: 200px;
            height: 200px;
            margin-right: 20px;
            margin-bottom: 20px;
            background: green;
        }
    </style>
</head>
<body>
<!--list-area宽度不定,list-item个数不定-->
<div class="list-area">
    <div class="list-item"></div>
    <div class="list-item"></div>
    <div class="list-item"></div>
    <div class="list-item"></div>
    <div class="list-item"></div>
    <div class="list-item"></div>
    <div class="list-item"></div>
    <div class="list-item"></div>
    <div class="list-item"></div>
    <div class="list-item"></div>
    <div class="list-item"></div>
    <div class="list-item"></div>
    <div class="list-item"></div>
    <div class="list-item"></div>
    <div class="list-item"></div>
    <div class="list-item"></div>
    <div class="list-item"></div>
    <div class="list-item"></div>
    <div class="list-item"></div>
</div>

[不好的结果1]
clipboard.png
[不好的结果2]
clipboard.png

阅读 7.9k
5 个回答

codePen

填充若干空item(只要大于等于你一行的最大个数就行了)

可以用 grid 试试

.list-area {
    display: grid;
    grid-template-columns: repeat(auto-fill, 200px);
    grid-gap: 20px 20px;
    justify-content: space-around;
}
.list-item {
    width: 200px;
    height: 200px;
    background: green;
    align-self: center;
}

用JS动态计算出每一行的.list-item个数,然后在最后一行补上空白的.list-item ?

水平有限,目前我觉得最优解就是js获取屏幕宽度,渲染item之后,计算共有多少个item 然后用js生成空白item补上剩余空间

使用flex 布局实现,核心实现代码为

.container {
    display: flex;
    flex-wrap: wrap;
    justify-content: space-between;
  }
  .container:after {
    content: "";
    flex: auto;
  }

stackoverflow参考

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题