js瀑布流特效
瀑布流预览
代码示例
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title></title>
<style type="text/css">
*{
margin: 0px;
padding: 0px;
box-sizing: border-box;
}
#box{
position: relative;
}
.b_box{
float: left;
padding: 10px 0 0 10px;
}
.s_box{
border: solid 1px #ccc;
padding: 10px;
}
.b_box img{
vertical-align: bottom;
cursor: pointer;
}
</style>
</head>
<body>
<div id="box">
<div class="b_box"><div class="s_box"><img src="img/1.jpg"/></div></div>
<div class="b_box"><div class="s_box"><img src="img/2.jpg"/></div></div>
<div class="b_box"><div class="s_box"><img src="img/3.jpg"/></div></div>
<div class="b_box"><div class="s_box"><img src="img/4.jpg"/></div></div>
<div class="b_box"><div class="s_box"><img src="img/5.jpg"/></div></div>
<div class="b_box"><div class="s_box"><img src="img/6.jpg"/></div></div>
<div class="b_box"><div class="s_box"><img src="img/7.jpg"/></div></div>
<div class="b_box"><div class="s_box"><img src="img/8.jpg"/></div></div>
<div class="b_box"><div class="s_box"><img src="img/9.jpg"/></div></div>
<div class="b_box"><div class="s_box"><img src="img/10.jpg"/></div></div>
<div class="b_box"><div class="s_box"><img src="img/11.jpg"/></div></div>
<div class="b_box"><div class="s_box"><img src="img/12.jpg"/></div></div>
<div class="b_box"><div class="s_box"><img src="img/13.jpg"/></div></div>
<div class="b_box"><div class="s_box"><img src="img/14.jpg"/></div></div>
<div class="b_box"><div class="s_box"><img src="img/15.jpg"/></div></div>
<div class="b_box"><div class="s_box"><img src="img/16.jpg"/></div></div>
<div class="b_box"><div class="s_box"><img src="img/17.jpg"/></div></div>
<div class="b_box"><div class="s_box"><img src="img/18.jpg"/></div></div>
<div class="b_box"><div class="s_box"><img src="img/19.jpg"/></div></div>
<div class="b_box"><div class="s_box"><img src="img/20.jpg"/></div></div>
<div class="b_box"><div class="s_box"><img src="img/21.jpg"/></div></div>
<div class="b_box"><div class="s_box"><img src="img/22.jpg"/></div></div>
<div class="b_box"><div class="s_box"><img src="img/23.jpg"/></div></div>
<div class="b_box"><div class="s_box"><img src="img/24.jpg"/></div></div>
<div class="b_box"><div class="s_box"><img src="img/26.jpg"/></div></div>
<div class="b_box"><div class="s_box"><img src="img/25.jpg"/></div></div>
<div class="b_box"><div class="s_box"><img src="img/27.jpg"/></div></div>
<div class="b_box"><div class="s_box"><img src="img/28.jpg"/></div></div>
<div class="b_box"><div class="s_box"><img src="img/29.jpg"/></div></div>
<div class="b_box"><div class="s_box"><img src="img/30.jpg"/></div></div>
</div>
<script type="text/javascript">
window.onload = function(){
var box = document.getElementById("box");
var b_boxs = document.getElementsByClassName("b_box");
var s_boxs = document.getElementsByClassName("s_box");
var imgs = document.getElementsByTagName("img");
var img = s_boxs[0].getElementsByTagName("img")[0];
//浏览器的宽度 document.body.offsetWidth
var clientWidth = document.body.offsetWidth;
//图片的宽度 img.img.offsetWidth
var imgWidth = img.offsetWidth;
//图片的高度 img.img.offsetHeight
var imgHeight = img.offsetHeight;
//b_box的宽度
var b_boxWidth = b_boxs[0].offsetWidth;
//b_box的高度
var b_boxHeight = b_boxs[0].offsetHeight;
//获取每行图片的个数
var num = parseInt(clientWidth/b_boxWidth);
//设置盒子居中
box.style.width = b_boxWidth*num + "px";
box.style.margin = " 0 auto";
// console.log(b_boxWidth);
// console.log(b_boxHeight);
console.log("列数:" + num);
var b_boxHeight = [];
for (var i = 0; i < b_boxs.length; i++) {
if(i<num){
b_boxHeight.push(b_boxs[i].offsetHeight);
}else{
var minHeight = getMinHeight(b_boxHeight);
var minHeightIndex = getMinHeightIndex(b_boxHeight,minHeight);
b_boxs[i].style.position = "absolute";
b_boxs[i].style.left = minHeightIndex*b_boxWidth + "px"
b_boxs[i].style.top = minHeight + "px"
b_boxHeight[minHeightIndex] += b_boxs[i].offsetHeight;
}
}
console.log(minHeight)
console.log(minHeightIndex)
console.log(b_boxHeight);
for (var i = 0; i < imgs.length; i++) {
imgs[i].onmouseover = function (){
// this.parentNode.style.border = "solid 1px red"
}
}
}
function getMinHeight(arr){
var min = arr[0];
for (var i = 0; i < arr.length; i++) {
if(min>arr[i]){
min = arr[i];
}
}
return min;
}
function getMinHeightIndex(arr,minHeight){
var index;
for (var i = 0; i < arr.length; i++) {
if(minHeight == arr[i]){
index = i;
}
}
return index;
}
</script>
</body>
</html>
图片素材
1 | 2 | 3 |
---|---|---|
1.jpg
|
2.jpg
|
3.jpg
|
4 | 5 | 6 |
:--: | :--: | :--: |
4.jpg
|
5.jpg
|
6.jpg
|
7 | 8 | 9 |
:--: | :--: | :--: |
7.jpg
|
8.jpg
|
9.jpg
|
10 | 11 | 12 |
:--: | :--: | :--: |
10.jpg
|
11.jpg
|
12.jpg
|
13 | 14 | 15 |
:--: | :--: | :--: |
13.jpg
|
14.jpg
|
15.jpg
|
16 | 17 | 18 |
:--: | :--: | :--: |
16.jpg
|
17.jpg
|
18.jpg
|
19 | 20 | 21 |
:--: | :--: | :--: |
19.jpg
|
20.jpg
|
21.jpg
|
22 | 23 | 24 |
:--: | :--: | :--: |
22.jpg
|
23.jpg
|
24.jpg
|
25 | 26 | 27 |
:--: | :--: | :--: |
25.jpg
|
26.jpg
|
27.jpg
|
28 | 29 | 30 |
:--: | :--: | :--: |
28.jpg
|
29.jpg
|
30.jpg
|