flex最后一行左对齐

根据个数最后一个元素动态margin
ul {
    display: flex;
    justify-content: space-between;   /* 两端对齐 */
    flex-wrap: wrap;
}
li{
    width: 24%; 
}

ul li:last-child:nth-child(4n - 1){ /**最后一行,要么3个元素,要么7个元素  (最后一行还剩1个空间)**/  
    margin-right: calc(24% * 1 + 4%/3*1 );    /* 24%:列的宽  1:还剩1空间     4%:间隙宽100%-4列*24%=4%;  */
}
ul li:last-child:nth-child(4n - 2){ /**最后一行,要么2个元素,要么6个元素  (最后一行还剩1个空间) */
    margin-right: calc(24% * 2 + 4%/3*2 );   /* 24%:列的宽  2:还剩2列空间    4%:间隙总宽 / 3:间隙个数(一般总列数减一)  2:还剩2列空间间隙  */
}

列2

:root {
    --listbox:24%;          /*子元素宽度*/
    --n:4;                  /*列数*/ 
    --gaps:calc(100% - var(--listbox) * var(--n) ); /*总间隙宽*/
    --ga:calc(var(--gaps) / 3);                     /* 3间隙数*/
}
.case-category ul li:last-child:nth-child(4n - 1){ /**最后一行,要么3个元素,要么7个元素* (最后一行还剩1个空间) */
    margin-right: calc(var(--listbox) * 1 + var(--ga)*1);
}
.case-category ul li:last-child:nth-child(4n - 2){ /**最后一行,要么2个元素,要么6个元素* (最后一行还剩2个空间) */
    margin-right:calc(var(--listbox) * 2 + var(--ga)*2 );
}

例如:

  • .list:last-child:nth-child(4n - 1)说明最后一行,要么3个元素,要么7个元素……
  • .list:last-child:nth-child(4n - 2)说明最后一行,要么2个元素,要么6个元素……
.container {
    display: flex;
    /* 两端对齐 */
    justify-content: space-between;
    flex-wrap: wrap;
}
.list {
    width: 24%; height: 100px;
    background-color: skyblue;
    margin-top: 15px;
}
/* 如果最后一行是3个元素 */
.list:last-child:nth-child(4n - 1) {
    margin-right: calc(24% + 4% / 3);
}
/* 如果最后一行是2个元素 */
.list:last-child:nth-child(4n - 2) {
    margin-right: calc(48% + 8% / 3);
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

永远的WEB小白

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值