干货来袭!web前端开发工程师必看之如何使用CSS3实现瀑布流效果?
首先,我们来看一下什么是瀑布流布局效果,比如电商网站 蘑菇街
原理图:
在一个大盒子里,放置多个小盒子,小盒子的大小可以不一致,长短不一样,呈现一种瀑布流的效果。
使用CSS3S实现只需要如下4步:
1. 准备图片素材
2. 书写相应HTML结构
3. 了解CSS 多栏(Multi-column) 属性
4. 使用CSS 多栏属性完成瀑布流布局
一、第一步 —— 准备图片素材
目标 : 准备图片素材,每张图片的宽度长度最好都不要同样大小的,另外,图片宽度高度也不宜太大
小结 : 准备多张图片素材,宽度高度不宜超过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>
小结 : 通过img标签的src属性正确引入图片,需要多个img标签,因为我们需要多个图片
三、第三步 —— 了解CSS 多栏(Multi-column) 属性
小结 :
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>
小结 : 注意属性名与取值不要写错,每个css属性值后面都有一个英文状态的分号
总结
使用CSS3可以轻松实现瀑布流布局,但 Internet Explorer 9及更早 IE 版本浏览器不支持 column-count 属性。
我们再来回顾一下,我们刚刚实现的步骤:
1. 准备图片素材
2. 书写相应HTML结构 : 使用多张图片,放在同一个大盒子中
3. 了解CSS 多栏(Multi-column) 属性
– column-count 把指定盒子中的内容最多分为多少列,会根据浏览器的大小变化,但是不会超过我们指定的列数
– column-width 规定每列列宽最小为多少
– column-gap 规定每列的间隙
4. 使用CSS 多栏属性完成瀑布流布局