背景

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

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

方案

想到这种设计,我们学过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 {
width: 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

flex space-between最后一行对齐问题的解决方案的更多相关文章

  1. flex布局,最后一行左对齐

    拥抱flex 网上查找资料解决办法都是操作数据,个人感觉css问题还是用css来解决(当然问题不同,解决方案不同,这里只是针对某个问题的解决方法,不能解决所有问题,大家视情况而定,如果还是不行欢迎沟通 ...

  2. Linux下jetty报java.lang.OutOfMemoryError: PermGen space及Jetty内存配置调优解决方案

    Linux下的jetty报java.lang.OutOfMemoryError: PermGen space及Jetty内存配置调优解决方案问题linux的jetty下发布程序后再启动jetty服务时 ...

  3. flex 垂直居中、两列对齐、自适应宽

    flex 垂直居中 <div id="parent"> <div id="child"> </div> </div&g ...

  4. input框与img在同一行对齐

    将input和img放同一行,img标签总是比input高出一个头,难看.后来在网站搜到最多的就是给img添加一个align="absmiddle"属性,这个方法似乎的确可行,但是 ...

  5. html 图标和文字一行对齐

    原图: 效果图: 备注:vertical-align:middle <div> <p class="time tl-size12" style="pad ...

  6. display:flex; justify-content:space-between; 最后一行显示内容无法靠左显示

    给父元素添加同每行展示列数一样(展示列表最多的)的子元素. 子元素设置样式: width:同子元素一样的width : height:0;

  7. IDEA 服务启动报:No buffer space available (maximum connections reached): connect的解决方案。

    错误提示:严重: Error starting endpointjava.io.IOException: Unable to establish loopback connectionat sun.n ...

  8. 小图标文字对齐的终极解决方案demo

    CSS代码: .icon { display: inline-block; width:20px; height:20px; background: url(delete.png) no-repeat ...

  9. 如何利用CSS代码使图片和文字在同一行显示且对齐

    对于初学css的新手朋友来说,经常会遇到这样一个问题,当文字和图片出现在同一行或者同一个div里面的时候,在浏览器中运行出来的显示效果往往是在不同的行,那么,我们怎么才能利用CSS代码使图片和文字在同 ...

随机推荐

  1. springboot中返回值json中null转换空字符串

    在实际项目中,我们难免会遇到一些无值.当我们转JSON时,不希望这些null出现,比如我们期望所有的null在转JSON时都变成“”“”这种空字符串,那怎么做呢? Jackson中对null的处理 @ ...

  2. jenkins - docker搭建jenkins

    jenkins镜像拉取 docker pull jenkins/jenkins 为jenkins镜像分配容器 docker run -d --name jenkins \ -p 8080:8080 \ ...

  3. 【Unity|C#】基础篇(17)——字符串处理(String/StringBuilder)

    [学习资料] <C#图解教程>(第25章):https://www.cnblogs.com/moonache/p/7687551.html 电子书下载:https://pan.baidu. ...

  4. sqlalchemy_mptt一次调优

    问题背景: 我用sqlalchemy_mptt构建了一个多级分类项目,数据库用了sqlite.随着数据条数越来越多,写入速度逐渐变慢,一棵树的插入甚至需要1分钟,远远不能满足需求 分析思路: 1. 批 ...

  5. 一个简单的java web项目 仅实现添加

    连接数据库已经进行判断 要求: 1登录账号:要求由6到12位字母.数字.下划线组成,只有字母可以开头:(1分) 2登录密码:要求显示“• ”或“*”表示输入位数,密码要求八位以上字母.数字组成.(1分 ...

  6. vue 多组件路由处理方法

    实现页面: 实现效果: 实现代码: <!DOCTYPE html> <html> <head> <meta charset="UTF-8" ...

  7. Git 版本回退的几种操作方法

    1, 结合使用 git reset --hard <commit id> , git reset --hard HEAD^,  git reflog , git log 1) 使用 git ...

  8. 使用win10 IIS 发布局域网网站

    1.安装IIS 按win+R键,输入control,打开控制面板,点击程序,点击 启用或关闭windows 功能,将Internet Information Service勾上,把下属的asp.net ...

  9. 解决Office2016输入失效密钥之后无法输入的问题

    第一步: 以管理员的身份运行cmd 第二步输入以下命令: cscript "C:\Program Files (x86)\Microsoft Office\Office16\OSPP.VBS ...

  10. 海康 - 终端服务器 - TS-5012-F

    简介 型号描述 主要特点 典型应用 技术参数        型号 参数 TS-5012-F (1T) TS-5012-F (2T) TS-5012-F (4T) TS-5012-F (8T) 系统参数 ...