怎样在网页中做出瀑布流效果?

html-css015

怎样在网页中做出瀑布流效果?,第1张

在网页中实现瀑布流效果方法:

1.传统多列浮动

各列固定宽度,并且左浮动

一列中的数据块为一组,列中的每个数据块依次排列即可

更多数据加载时,需要分别插入到不同的列上。

2. CSS3 定义

由 chrome/ff 浏览器直接渲染出来,可以指定容器的列个数,列间距,列中间边框,列宽度来实现

#container {

-webkit-column-count: 5;

/*-webkit-column-gap: 10px;

-webkit-column-rule: 5px solid #333;

-webkit-column-width: 210px;*/

-moz-column-count: 5;

/*-moz-column-gap: 20px;

-moz-column-rule: 5px solid #333;

-moz-column-width: 210px;*/

column-count: 5;

/*column-gap: 10px;

column-rule: 5px solid #333;

column-width: 210px;*/

}

column-count 为列数column-gap 为每列间隔距离column-rule 为间隔边线大小column-width 为每列宽度当只设置 column-width 时,浏览器窗口小于一列宽度时,列中内容自动隐藏当只设置 column-count 时,平均计算每列宽度,列内内容超出则隐藏都设了 column-count 和column-width,浏览器会根据 count 计算宽度和 width 比较,取大的那个值作为每列宽度,然后当窗口缩小时,width 的值为每列最小宽度。

3.绝对定位

可谓是最优的一种方案,方便添加数据内容,窗口变化,列数/数据块都会自动调整。

瀑布流布局,一般指根据内容高度自适应填充到某一列以使整体页面和谐,常见的有图片网站,比如每一行每一列的内容是错开的。

瀑布流布局一般是下面这个样子

css中有这么两个属性:

注意

这也是我推荐大家用第一种方法的最主要原因。

这种方案做出来的效果有点奇葩,特殊的应用场景可能会用到,最终效果是横向瀑布流

flex布局中有一个属性 flex-flow ,指明在哪个方向上在长度不够的情况想拆行,详情大家自己查阅

第一种方法其实是最合适的,也是对开发人员要求最高的,即使有思路与算法在开发过程中也会踩很多坑,比如(1)图片预加载,(2)querySelector取元素居然获取不到,(3)使用box-sizing简化计算过程降低复杂性,等等。 box-sizing 属性用好了非常高效,推荐大家去仔细看看

第二种方法其实也可行,但是不推荐

第三种方法就有点扯了,估计不常用到,大家看看就行