先說一下什么是瀑布流布局。
就是一堆等寬不等高的數(shù)據(jù)塊組成的頁面,如圖:
現(xiàn)在好多網(wǎng)站都采用這種瀑布流布局,如蘑菇街。美麗說等等。
首先要實現(xiàn)它就要明白它是怎樣排列的。
每一行的列數(shù)都是根據(jù)圖片的寬度和頁面的寬度算比例算下來的。
第一行就是按順序排列,其他的數(shù)據(jù)塊都是在每一列中挑選出最低的那一列依次排進去的。
首先實現(xiàn)框架。
<p id = "main"> <p class = "box"> <p class = "pic"> <img src = "images/0.jpg"> </p> </p> <p class = "box"> <p class = "pic"> <img src = "images/1.jpg"> </p> </p> <p class = "box"> <p class = "pic"> <img src = "images/2.jpg"> </p> </p> <p class = "box"> <p class = "pic"> <img src = "images/3.jpg"> </p> </p> <p class = "box"> <p class = "pic"> <img src = "images/4.jpg"> </p> </p> <p class = "box"> <p class = "pic"> <img src = "images/5.jpg"> </p> </p> <p class = "box"> <p class = "pic"> <img src = "images/6.jpg"> </p> </p> <p class = "box"> <p class = "pic"> <img src = "images/7.jpg"> </p> </p> <p class = "box"> <p class = "pic"> <img src = "images/8.jpg"> </p> </p> <p class = "box"> <p class = "pic"> <img src = "images/9.jpg"> </p> </p> <p class = "box"> <p class = "pic"> <img src = "images/10.jpg"> </p> </p> <p class = "box"> <p class = "pic"> <img src = "images/11.jpg"> </p> </p> <p class = "box"> <p class = "pic"> <img src = "images/12.jpg"> </p> </p> <p class = "box"> <p class = "pic"> <img src = "images/13.jpg"> </p> </p> <p class = "box"> <p class = "pic"> <img src = "images/14.jpg"> </p> </p> </p>
這里定義了14個圖片,每個圖片都被一個class= box的屬性和class= “pic”的屬性包裹,在css中定義其樣式:
*{ padding: 0px; margin: 0px; } #main{ position: relative; } .box{ /* display: inline-block;*/ padding: 15px 0px 0px 15px; float: left; } .pic{ padding: 10px; border-radius: 5px; border:1px solid #ccc; box-shadow: 0 0 5px #ccc; } .pic img{ width: 165px; height: auto; } </style>
效果圖如下:
其實每一行六個圖片不是固定的,當(dāng)你縮小窗口時,它會成為兩列,或者三列四列。但我們?yōu)榱艘院蟮牟季郑蛯⑺O(shè)置為固定的列數(shù),即根據(jù)窗口的大小除以圖片的大小,向下取整。
接下來寫的是js實現(xiàn)的瀑布流布局。
在寫代碼之前,由于要用到box屬性,而js中沒有直接定義獲得class的方法,所以我們在這兒要寫一個獲得class的方法:
兩個參數(shù)分別是父元素和要查找的classname。
接下來寫函數(shù):
聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com