• 解决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%) }

  • 相关阅读:
    快速检索并引用你在CSDN上所有的博文笔记
    Apache shiro框架
    Postman使用简介
    5、Zab协议
    Python【理解标识符的定义】
    Android 唤醒屏幕的方式:屏幕锁 - WakeLock / FLAG_KEEP_SCREEN_ON
    [附源码]计算机毕业设计springboot冬奥资讯系统
    matlab相机标定求得相机内参
    NLog笔记
    vue的路由守卫中,在beforeRouteEnter中动态获取路由地址信息之to、from、next & vm的使用
  • 原文地址:https://blog.csdn.net/m0_57033755/article/details/133783845