干货来袭!web前端开发工程师必看之如何使用CSS3实现瀑布流效果?

lkwkqd 2019-01-25

首先,我们来看一下什么是瀑布流布局效果,比如电商网站 蘑菇街

干货来袭!web前端开发工程师必看之如何使用CSS3实现瀑布流效果?

原理图:

干货来袭!web前端开发工程师必看之如何使用CSS3实现瀑布流效果?

在一个大盒子里,放置多个小盒子,小盒子的大小可以不一致,长短不一样,呈现一种瀑布流的效果。

使用CSS3S实现只需要如下4步:

1. 准备图片素材

2. 书写相应HTML结构

3. 了解CSS 多栏(Multi-column) 属性

4. 使用CSS 多栏属性完成瀑布流布局

一、第一步 —— 准备图片素材

目标 : 准备图片素材,每张图片的宽度长度最好都不要同样大小的,另外,图片宽度高度也不宜太大

干货来袭!web前端开发工程师必看之如何使用CSS3实现瀑布流效果?

小结 : 准备多张图片素材,宽度高度不宜超过1000像素

二、第二步 —— 书写相应HTML结构

目标 : 在HTML页面中插入多个图片标签img,并正确通过src属性引入鼠标

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>Document</title>
</head>
<body>
 <div class="box">
 <img src="images/P_001.jpg"/>
 <img src="images/P_002.jpg"/>
 <img src="images/P_003.jpg"/>
 <img src="images/P_004.jpg"/>
 <img src="images/P_005.jpg"/>
 <img src="images/P_006.jpg"/>
 <img src="images/P_007.jpg"/>
 <img src="images/P_008.jpg"/>
 <img src="images/P_009.jpg"/>
 <img src="images/P_010.jpg"/>
 <img src="images/P_011.jpg"/>
 <img src="images/P_012.jpg"/>
 <img src="images/P_013.jpg"/>
 <img src="images/P_014.jpg"/>
 <img src="images/P_015.jpg"/>
 <img src="images/P_016.jpg"/>
 <img src="images/P_017.jpg"/>
 <img src="images/P_018.jpg"/>
 <img src="images/P_019.jpg"/>
 <img src="images/P_020.jpg"/>
 </div>
</body>
</html>

干货来袭!web前端开发工程师必看之如何使用CSS3实现瀑布流效果?

小结 : 通过img标签的src属性正确引入图片,需要多个img标签,因为我们需要多个图片

三、第三步 —— 了解CSS 多栏(Multi-column) 属性

干货来袭!web前端开发工程师必看之如何使用CSS3实现瀑布流效果?

小结 :

l column-count指定元素应该被分割的列数

l column-width指定列的宽度

l column-gap指定列与列之间的间隙

四、第四步 —— 使用CSS 多栏属性完成瀑布流布局

目标 : 使用CSS多栏属性实现我们的图片瀑布流布局

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>Document</title>
 <style type="text/css">
 /*清除所有标签的内外边距*/
 *{
 margin: 0;
 padding: 0;
 }
 /*选中.box标签*/
 .box{
 /*把.box中的内容最多分为4列,会根据浏览器的大小变化,但是不会超过4列*/
 column-count: 4;
 /*规定每列列宽最小为200px*/
 column-width: 200px;
 /*规定每列的间隙为1em*/
 column-gap: 1em;
 /*盒子宽度为1000px*/
 width: 1000px;
 /*实现盒子水平居中*/
 margin:0 auto;
 }
 /*选中.box下的所有img标签*/
 .box img{
 /*上下左右5px的内填充*/
 padding:5px;
 /*上下左右5px的外边距*/
 margin:5px;
 /*圆角边框*/
 border-radius:5px;
 /*盒子阴影*/
 box-shadow:0px 0px 5px gray;
 }
 </style>
</head>
<body>
 <div class="box">
 <img src="images/P_001.jpg"/>
 <img src="images/P_002.jpg"/>
 <img src="images/P_003.jpg"/>
 <img src="images/P_004.jpg"/>
 <img src="images/P_005.jpg"/>
 <img src="images/P_006.jpg"/>
 <img src="images/P_007.jpg"/>
 <img src="images/P_008.jpg"/>
 <img src="images/P_009.jpg"/>
 <img src="images/P_010.jpg"/>
 <img src="images/P_011.jpg"/>
 <img src="images/P_012.jpg"/>
 <img src="images/P_013.jpg"/>
 <img src="images/P_014.jpg"/>
 <img src="images/P_015.jpg"/>
 <img src="images/P_016.jpg"/>
 <img src="images/P_017.jpg"/>
 <img src="images/P_018.jpg"/>
 <img src="images/P_019.jpg"/>
 <img src="images/P_020.jpg"/>
 </div>
</body>
</html>

干货来袭!web前端开发工程师必看之如何使用CSS3实现瀑布流效果?

小结 : 注意属性名与取值不要写错,每个css属性值后面都有一个英文状态的分号

总结

使用CSS3可以轻松实现瀑布流布局,但 Internet Explorer 9及更早 IE 版本浏览器不支持 column-count 属性。

我们再来回顾一下,我们刚刚实现的步骤:

1. 准备图片素材

2. 书写相应HTML结构 : 使用多张图片,放在同一个大盒子中

3. 了解CSS 多栏(Multi-column) 属性

– column-count 把指定盒子中的内容最多分为多少列,会根据浏览器的大小变化,但是不会超过我们指定的列数

– column-width 规定每列列宽最小为多少

– column-gap 规定每列的间隙

4. 使用CSS 多栏属性完成瀑布流布局

相关推荐