计算方式为:计算 column-count和 column-width转换后具体的列数 , 哪个小就用哪个 。
一个图片&文字的例子:
文章插图
…
文章插图
…
.masonry{ column-count: 3; column-gap: 10px;}.masonry .item{ border:1px solid #999; margin-bottom: 10px;}.masonry .item img{ width: 100%;}
【瀑布流的效果布局 图标瀑布流显示是什么意思】在线Demo及完整代码地址:
效果如下:
文章插图
我们可以看到 , 虽然实现了 瀑布流的效果 , 但奇怪的是例子中前两列的最后一个元素的 文本内容被 自动断开 , 一部分在当前列尾 , 一部分在下一列的列头 。
我的理解是 multi-column布局会将其内的元素自动进行流动和平衡 , 尽可能保证每列的高度趋于相同 , 所以会将其内的文本阶段分布在两列内 。
而这种展示方式无疑是我们不希望看到的 , 我们希望的是每个元素都是独立的 , 前后不断开 , 此时我们需要使用 break-inside来实现 。
break-inside: auto | avoid
.masonry .item{ break-inside: avoid;}
在线Demo及完整代码地址:
效果如下:
文章插图
效果实现了 , 但由于 multi-column布局中子元素的排列顺序是先 从上往下再 从左至右 , 所以这种方式仅适用于数据固定不变的情况 , 对于滚动加载更多等可动态添加数据的情况就并不适用了 。
grid 布局实现瀑布流
Grid布局是最强大的 CSS 布局方案 。
它将网页划分成一个个网格 , 可以任意组合不同的网格 , 做出各种各样的布局 。以前 , 只能通过复杂的 CSS 框架达到的效果 , 现在浏览器内置了 。
文章插图
上图这样的布局 , 就是 Grid 布局的拿手好戏 , 因此 , 我们就可以用 Grid来实现 瀑布流 。
为实现 瀑布流先介绍以下几个属性:
根据以上几个属性 , 先写一个例子出来 , 看看效果:
.masonry{ display: grid; grid-template-rows: 1fr 1fr 1fr; // 分为3行 grid-template-columns: 1fr 1fr 1fr; // 分为3列 column-gap:5px; // 列间距5px}
在线Demo及完整代码地址:
效果如下:
文章插图
我们看到高度不同的div块分布在每一个单元格内 , 但还没有实现 瀑布流的效果 。
为实现 瀑布流再介绍几个属性:
划分网格的线 , 称为 网格线 。水平网格线划分出行 , 垂直网格线划分出列 。
正常情况下 , n行有 n+1根水平网格线 , m列有 m+1根垂直网格线 , 比如三行就有四根水平网格线 。
文章插图
上图是一个 4 x 4 的网格 , 共有5根水平网格线和5根垂直网格线 。
这4个属性可接收如下属性:
- 快手推广有效果吗 快手40块钱推广有用吗
- 醋对甲醛有没有效果
- 1500左右的手机哪款拍照效果好
- 什么洗发水去屑止痒效果好 去屑止痒洗发水排行榜
- 如何敷面膜效果最好
- 引流推广效果好的app 引流推广软件
- 小型便利店装修设计 便利店装修效果图大全
- 美白化妆品排行榜 什么化妆品美白效果比较好
- 说说你家小学生的网课效果怎么样呢
- 用ps做雾化效果怎么做的啊