• 解决flex布局space-between 最后一行不对齐的问题


    出现的问题:

    方法一:给父级元素后面添加伪元素

    在父盒子的样式里添加下列代码:

    1. &::after {
    2. content: '';
    3. flex: auto;
    4. }

    方法二:计算 

    适用于每一行列数固定,且列宽度固定,需要进行计算,相比较复杂

    方案: 对于最后一行的元素动态设置margin-right。判断如果最后一个元素处于当前列,会发生布局错乱,则设置元素的 margin-right 为剩余空间的大小(剩余列宽度+剩余间隙大小)。假设元素宽度是$width,总间隙是 $space(盒子宽度-元素宽度*列数)。

    计算公式: margin-right: calc( ($space / 间隙数) * 剩余列数 + $width * 剩余列数 )

    三列布局

    计算方法

    最后一个元素所处列数剩余空间margin-right
    第二列(li:last-child:nth-child(3n - 1))第三个元素宽度+剩余间隙($space / 2) * 1 + $width * 1

    代码:

    1. <ul>
    2. <li>li>
    3. <li>li>
    4. <li>li>
    5. <li>li>
    6. <li>li>
    7. ul>

     

    1. ul {
    2. display: flex;
    3. flex-wrap: wrap;
    4. justify-content: space-between;
    5. }
    6. li {
    7. width: 30%;
    8. margin-bottom: 20px;
    9. height: 200px;
    10. background: pink;
    11. }
    1. /* 三列布局,li宽度为30%,则剩余间隙:100% - 30% * 3 = 10% */
    2. /* 如果最后一行是2个元素 calc(10% / 2 * 1 + 30% * 1) 可简化 */
    3. ul>li:last-child:nth-child(3n - 1) { margin-right: calc(10% / 2 + 30%) }

    四列布局

    计算方法:

    最后一个元素所处列数剩余空间margin-right
    第二列(li:last-child:nth-child(4n - 2))

    第三个元素宽度+第四个元素宽度+剩余间隙

    ($space / 3) * 2 + $width * 2
    第三列(li:last-child:nth-child(4n - 1))第四个元素宽度+剩余间隙($space / 3) * 1 + $width * 1
    1. /* 四列布局,li宽度为22%,则剩余间隙:100% - 22% * 4 = 12% */
    2. /* 如果最后一行是2个元素 calc(12% / 3 * 2 + 22% * 2) 可简化 */
    3. ul>li:last-child:nth-child(4n - 2) { margin-right: calc(24% / 3 + 44%) }
    4. /* 如果最后一行是3个元素 calc(12% / 3 * 1 + 22% * 1) 可简化 */
    5. ul>li:last-child:nth-child(4n - 1) { margin-right: calc(12% / 3 + 22%) }

  • 相关阅读:
    [nacos]nacos2.x+nginx集群搭建以及过程中遇到的坑
    libusb 源码移植到工程项目中,使用CMake编译
    方舟建筑代码指令大全
    SpringBoot2.x仿B站项目的弹幕,投币系统可能的高并发数据缓存方面的学习笔记
    go中的方法 func-----数据类型
    微电网与电动车蓄电池优化(Matlab代码实现)
    UML统一建模语言
    JAVA sql 查询3
    SpringMVC异常处理
    ChatGPT-4o 有何特别之处?
  • 原文地址:https://blog.csdn.net/m0_57033755/article/details/133783845