当前位置: 首页 > backend >正文

自适应布局,平均分配,自动换行,上下对齐

前言

做一个桌面应用的需求,要求所有元素平铺排列,窗口大小改变后会自动换行,且上下对齐

flex布局

在flex布局中,如果使用justify-content: space-between; 最后一行没铺满的时候也会左右对齐,不能达到上下对齐的效果,所以需要设置after,让最后一行变成左对齐。

<!DOCTYPE html>
<html><head><meta charset="utf-8"><title></title></head><style type="text/css">li {list-style: none;}.list {width: 100%;box-sizing: border-box;display: flex;justify-content: space-between;flex-wrap: wrap;padding: 10px;}.list:after{content: "";flex: auto;}.item {width: 220px;height: 60px;background-color: azure;margin-bottom: 10px;border: 1px solid red;margin-right: 17px;}.item:nth-child(5n){margin-right: 0;}</style><body><div style="width: 1200px; margin: auto; background-color: #cccccc; height: 500px;"><ul class="list"><li class="item"></li><li class="item"></li><li class="item"></li><li class="item"></li><li class="item"></li><li class="item"></li><li class="item"></li><li class="item"></li><li class="item"></li><li class="item"></li><li class="item"></li><li class="item"></li><li class="item"></li></ul></div></body>
</html>

在这里插入图片描述
这里每个item的margin-right要调整,才能达到上下对齐的效果

问题一

对于桌面工具来说,窗口缩放时margin的比例会改变,造成最后一行与上面不能对齐的情况。
这种方法对于固定宽度的窗口是有效的。
解决:给每一个item设置flex的比例:

		.item {flex: 0 0 20%height: 60px;background-color: azure;margin-bottom: 10px;border: 1px solid red;padding: 10px;}

这种方法虽然可以自动让上下对齐,但也有缺点,它的一行只能放5个元素了,如果窗口变大也不会增多元素。

grid布局

改成grid布局,可以完美实现这个需求

    .list {display: grid;/* 根据容器宽度自动填充列 */grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));justify-items: stretch;}

在这里插入图片描述

这里 grid-template-columns参数的minmax要根据item的宽度调整。

总结

如果屏幕宽度不会改变可以选择flex布局,推荐使用grid布局,效果很好。

http://www.xdnf.cn/news/317.html

相关文章:

  • C++常用锁总结
  • 需求:金额字段要求只能输入两位且直接进行截断
  • 楼梯上下检测数据集VOC+YOLO格式5462张2类别
  • ifconfig -bash: ifconfig: command not found
  • bulk-seq分析,表达量你使用fpkm?还是tpm?
  • 邮件自动回复助手(Rasa/SMTP)实现教程
  • 【Triton 教程】triton_language.full
  • 代码随想录算法训练营第二十一天
  • 【认知觉醒】是什么? 如何做到 ? ( 持续更新ing )
  • 2021 CCF CSP-S2.廊桥分配
  • Arduino无线体感机器手——问题汇总
  • 土建施工员备考经验分享
  • o3和o4-mini的升级有哪些亮点?
  • JS反混淆网站
  • 使用MQTT协议实现VISION如何与Node-red数据双向通信
  • 每日算法-250418
  • 基于autoware1.14的实车部署激光雷达循迹,从建图、定位、录制轨迹巡航点、到实车运行。
  • linux查看及修改用户过期时间
  • Flutter_学习记录_状态管理之GetX
  • 从Archery到NineData:积加科技驱动数据库研发效能与数据安全双升级
  • C++:PTA L1-006 连续因子
  • AI Agent 元年,于 2025 开启
  • Python 高阶函数:日志的高级用法
  • Linux | I.MX6ULL 内核的编译(13)
  • npm i 安装遇到问题
  • 第五章----继承
  • 通俗理解MCP(Model Context Protocol)和A2A(Agent2Agent)
  • Java 序列化与反序列化终极解析
  • 每日两道leetcode
  • 4.17-4.18学习总结 多线程