「干货」纯CSS实现瀑布流(Masonry)

「干货」纯CSS实现瀑布流(Masonry)Lorem ipsum dolor sit amet consectetur adipisicing elit Quis quod et

大家好,欢迎来到IT知识分享网。

「干货」纯CSS实现瀑布流(Masonry)

作者:MudOnTire

转发链接:https://segmentfault.com/a/03516

前言

瀑布流提供了一种错落有致的美观布局,被各种注重交互品味的素材网站(如:花瓣、unsplash)广泛应用。社区也提供了不少瀑布流布局的工具,如:masonry 、colcade 等。常规的实现瀑布流的做法是用 JS 动态的计算“砖块”的尺寸和位置,计算量大、性能差。今天给大家介绍一种使用纯 CSS 实现瀑布流的方法,简洁优雅。主要使用到了 CSS 中的多列属性 columns。

在使用一个比较陌生的 CSS 属性之前,习惯性的了解一下它的兼容性,去 caniuse.com 瞅一眼:

「干货」纯CSS实现瀑布流(Masonry)

看着兼容性还不错,那就放心的用吧。

HTML

先构造页面结构:

<div class="masonry"> <div class="item"> <img src="http://source.unsplash.com/random/400x600" /> <h2>Title Goes Here</h2> <p> Lorem, ipsum dolor sit amet consectetur adipisicing elit. Quis quod et deleniti nobis quasi ad, adipisci perferendis totam, ducimus incidunt dolore aut, quae quaerat architecto quisquam repudiandae amet nostrum quidem? </p> </div> ...more... </div>

在 div.masonry 容器中可以塞进任意多的 “砖块” div.item,“砖块” 中的图片可以从 unsplash 中随机获取,且可以制定图片的尺寸。

CSS

容器:

.masonry { width: 1440px; // 默认宽度 margin: 20px auto; // 剧中 columns: 4; // 默认列数 column-gap: 30px; // 列间距 }

砖块:

.item { width: 100%; break-inside: avoid; margin-bottom: 30px; } .item img { width: 100%; } .item h2 { padding: 8px 0; } .item P { color: #555; }

上面的样式其他都挺好理解,唯独 break-inside 这个属性比较陌生。让我们看一下去掉 break-inside 之后会有什么问题吧:

「干货」纯CSS实现瀑布流(Masonry)

可以看到有两个“砖块”的文字跑到上面和图片分开了。所以当设置了 break-inside: avoid 之后可以避免“砖块”内部的内容被断开。

不同屏幕尺寸适配

以上样式默认适配 PC,在其他尺寸设备上需要重新设置列数、列间距等样式,可以通过 media query 进行适配,比如:

ipad pro: @media screen and (min-width: 1024px) and (max-width: 1439.98px) { .masonry { width: 96vw; columns: 3; column-gap: 20px; } } ipad: @media screen and (min-width: 768px) and (max-width: 1023.98px) { .masonry { width: 96vw; columns: 2; column-gap: 20px; } } mobile: @media screen and (max-width: 767.98px) { .masonry { width: 96vw; columns: 1; } }

注意:屏幕尺寸区间不要有交集,也不要有缺口!

好了,大功告成,来张全家福!

「干货」纯CSS实现瀑布流(Masonry)

推荐CSS学习相关文章

手把手教你CSS grid布局「香」

手把手教你20个CSS 快速提升技巧

细品100道CSS知识点(上)「干货满满」

细品100道CSS知识点(下)「干货满满」

手把手教你CSS Flex布局「真香」

细品用SVG实现一个优雅的提示框

手把手整理CSS3知识汇总【思维导图】

手把手教你55 个提高CSS 开发效率的必备片段

手把手教你常见的CSS布局方式【实践】

让CSS flex布局最后一行左对齐的N种方法

妙用CSS变量,让你的CSS变得更心动

纯CSS实现简单骨骼动画【实践】

CSS揭秘实用技巧总结

你未必知道的49个CSS知识点

深入浅出超好用的 CSS 阴影技巧

关于前端CSS写法104个知识点汇总(一)

关于前端CSS写法104个知识点汇总(二)

前端开发规范:命名规范、html规范、css规范、js规范

CSS变量实现暗黑模式,我的小铺页面已经支持

深入浅出CSS中彻底搞懂word-break、word-wrap、white-space

深入浅出详细讲解CSS 渲染原理以及优化策略

手把手教你深入CSS实现一个粒子动效的按钮

手把手教你css 中多种边框的实现小窍门【实践】

手把手详细教你优化CSS提高网站加载速度的21种方法汇总【实践】

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/168080.html

(0)
上一篇 2025-01-19 12:05
下一篇 2025-01-19 12:15

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信