zoukankan      html  css  js  c++  java
  • flex space-between最后一行对齐问题的解决方案

    背景

    常见的一个图文列表设计,通常是这样的,两端顶着容器,中间的间距平均分,如下图的某东商品列表的设计:

    列表是这样自适应的,当视窗足够放多少个商品就放多少个,然后各个商品项目之间的间距平均分。由于每个人的视窗都可能不同,因此所看到的间距或者每一行的个数都会不同。

    方案

    想到这种设计,我们学过flex就知道,非常像flex的justify-content: space-between的效果,因此我们自然这样实现:

    .flex {
      list-style: none;
      margin: 0;
      padding: 0;
      box-sizing: border-box;
      display: flex;
      flex-wrap: wrap;
      justify-content: space-between;
    }
    .demo1 > .flex__item {
      flex-basis: 200px;
      margin-top: 1rem;
      text-align: center;
      box-sizing: border-box;
    }
    
    .demo1 > .flex__item img {
       100%;
    }  
    

    <ul class="flex demo1">
      <li class="flex__item">
        <img src="http://via.placeholder.com/100" />
        <p>
          图片
        </p>
      </li>
      <li class="flex__item">
        <img src="http://via.placeholder.com/100" />
        <p>
          图片
        </p>
      </li>
      <li class="flex__item">
        <img src="http://via.placeholder.com/100" />
        <p>
          图片
        </p>
      </li>
      <li class="flex__item">
        <img src="http://via.placeholder.com/100" />
        <p>
          图片
        </p>
      </li>
      <li class="flex__item">
        <img src="http://via.placeholder.com/100" />
        <p>
          图片
        </p>
      </li>
    </ul>

    demo: https://jsbin.com/yulevutodo/edit?html,css,output

    问题

    我们看到效果,最后一行不正确,应该向左对齐才对。

    大家有什么好的解决方案(为了保证兼容性,所以不希望用grid等)吗?

    我有一个方案,但是总感觉不是最佳的,希望大家先自己想想,然后再看我的方案,免得被我带偏了,若有不错的方案,希望告知,多谢!

    我的方案放在这边了:https://javascript.shop/2020/01/flex-space-between-last-row-alignment

  • 相关阅读:
    一个把数据转化成Excel导出的程序 python Django
    Ubuntu常用命令
    Git 常用命令 和 安装
    strick-footer 粘边布局
    Django
    CSS基础 和 font字体、背景属性连写 与 清除浮动方法
    MySQL 40题练习题和答案
    JS(ES6)、Vue.js、node.js
    ORM框架 和 面向对象编程
    MySQL基本指令3 和 索引 、分页
  • 原文地址:https://www.cnblogs.com/handboy/p/12142959.html
Copyright © 2011-2022 走看看