关于前端 CSS 的环绕问题有大佬会吗

2023-01-08 16:35:49 +08:00
 WuHao1477

问题

如下图一样的盒子,怎么让绿色的盒子补到红色盒子的间隙处

预想效果图

	效果图为手动改 div 布局做出来的。我的疑惑点在于怎么用 css 动态(响应式)实现环绕的效果,因为在渲染前我并不知道盒子的大小
1291 次点击
所在节点    问与答
8 条回复
loading
2023-01-08 16:49:40 +08:00
关键字:
css 瀑布流
3282361
2023-01-08 17:00:03 +08:00
如果是用在生产环境(对兼容性有要求),以从左往右从上到下为例,可以试试这两个思路:

1. 所有盒子都使用绝对定位计算位置,就是每个盒子的 left, top 都动态设置
2. 按列来处理,也就是每一列自行从上往下堆叠,自然也就补齐了,在外部盒子中再从左往右排列每一列

这种布局的实现方法很多,细节差异导致实现区别也很大,建议自行搜索「 Masonry Layout 」,找到适合自己的方式
cbdyzj
2023-01-08 17:12:40 +08:00
随便写一个实现:
https://codepen.io/cbdyzj/pen/jOpyBRO

实际要根据具体场景来选择布局
andyxic
2023-01-08 20:57:46 +08:00
@cbdyzj 真牛逼!!!
2Broear
2023-01-09 09:18:19 +08:00
flex,grid
theprimone
2023-01-09 09:47:49 +08:00
WuHao1477
2023-01-09 10:37:49 +08:00
是我描述得不太清楚抱歉各位!我再举个例子:
其实就是从:

![1.png]( https://s1.locimg.com/2023/01/09/cd19920d43474.png)

![2.png]( https://s1.locimg.com/2023/01/09/50ce93db51f2d.png)

![3.png]( https://s1.locimg.com/2023/01/09/1a47248de1bf2.png)

如何不改代码的情况下兼容这种情况:

![4.png]( https://s1.locimg.com/2023/01/09/78f0a157d62ed.png)
Rache1
2023-01-09 16:19:56 +08:00
这图看的我眼睛要瞎了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/907377

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX