解决flex布局换行最后一行的元素无法靠左/上布局的简单方法

问题:

当我们使用flex布局并设置自动换行时,最后一行的元素不会按照我们的预期靠左布局,如:

<view class="test">
    <view class="item">1</view>
    <view class="item">2</view>
    <view class="item">3</view>
    <view class="item">4</view>
    <view class="item">5</view>
</view>

css:

.test{
    width: 100%;
    background-color: blue;
    display: flex;
    //flex-direction: row;//横向排列,row是默认值
    //justify-content: space-around;//有换行不推荐使用弹性布局的对齐方式,否则最后一行元素会被挤到一起
    flex-wrap: wrap;
    
    .item{
        width: 22%;
        height: 100rpx;
        margin: 10rpx;
        background-color: red;
    }
}

结果:


image.png
需求:使"5"这个元素靠左布局

解决方法:给父元素增加一个伪元素,即:

.test{
        width: 100%;
        background-color: blue;
        display: flex;
        flex-wrap: wrap;
        &::after{
          flex: auto;
          content: "";
        }
    
        .item{
            width: 22%;
            height: 100rpx;
            margin: 10rpx;
            background-color: red;
            
        }
    }

结果:


image.png
同理,可实现纵向排列最后一行靠上排列:
.test{
        width: 100%;
        height: 450rpx;
        background-color: blue;
        display: flex;
        flex-direction: column;//纵向排列
        flex-wrap: wrap;
        &::after{
          flex: auto;
          content: "";
        }
    
        .item{
            height: 20%;
            margin: 10rpx;
            background-color: red;
            
        }
    }

image.png


可能会出现的问题:当子元素数量少无法占满父元素的宽度时,会出现以下问题:

image.png

要使“5”“6”两个元素靠左,且两列元素的间隔为之前设置的margin值,如何解决?
目前可实现的憨方法(遇到好方法就更新0.0):将现父元素test的width设为0(无法设置背景色,可在外部嵌套一层元素,在该元素上设置背景色)
image.png

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 声明 本系列文章内容全部梳理自以下四个来源: 《HTML5权威指南》 《JavaScript权威指南》 MDN w...
    Leson17阅读 528评论 0 0
  • 如果每一行列数是固定的 【方法一】:模拟 space-between 和间隙,也就是我们不使用 justify-c...
    NemoExpress阅读 8,594评论 0 3
  • 基础概念: 块级元素(black element) 典型代表:div,section我们可以自定义它的高度宽度(可...
    喵帕斯_390d阅读 648评论 0 0
  • 概念 父级元素 设置display:flex; 子元素即按照弹性盒子布局 实例 flex-direction 子元...
    小乙的乙阅读 1,001评论 0 1
  • Flex box布局模型的主要目的是提供更有效率的布局方式,尤其是当容器内元素的尺寸不固定的时候更能表现出它的优势...
    Sketch阅读 509评论 0 0