瀑布流第一节课
下面代码最终效果点(运行代码)看
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>瀑布流第一节课</title>
<style type="text/css">
#main .pin{
width: 225px;
height: auto;
padding: 15px 0px 0px 15px;
float: left;
}
#main .pin .box{
width: 205px;
height: auto;
padding: 10px;
background: #FFF;
border: 1px solid darkgray;
box-shadow: 0px 0px 6px 5px darkgrey;
border-radius: 5px;
}
#main .pin .box img{
width: 205px;
}
</style>
<script type="text/javascript">
window.onload = function(){
var oparent = document.getElementById('main');
var apin = getClassObj(oparent,'pin'); //调用getClassObj(); oparent父级 pin子级
//alert(apin.length); //看一下捉取成功没有
//获取窗口宽度 除以apin[0]的第0个,第一个,随便都行
// 看它能放得下多少个apin然后取整
var iptinw = apin[0].offsetWidth;
// var num = Math.floor(document.documentElement.clientWidth/apin[0].offsetWidth);
var num = Math.floor(document.documentElement.clientWidth/iptinw); //获得视窗的宽度除去其中的一个,然后取整
// oparent.style.cssText = 'width:'+num*apin[0].offsetWidth+'px';margin:0 auto;
oparent.style.cssText = 'width:'+num*iptinw+'px;margin:0 auto;';
// 把后面加进来的图片,找高度最低的图片下面加
var compareAarr = [];
// var str = ''; //''字符串 弹出来一下
// num 只比较第一排的
// for(var i=0;i<num;i++){
// 循环全部的apin
for(var i=0;i<apin.length;i++){
if (i<num) {
// compareAarr[i]数组里面的i
compareAarr[i] = apin[i].offsetHeight;
}else{
var minH = Math.min.apply({},compareAarr);//用这个数函数取出最小高度那个的值 需要两个参数 填一个空对像({},compareAarr) 和(null,compareAarr)都行
// var minkey 用一个变量把它接走
var minKey = getMinKey(compareAarr,minH); //调用下面写的函数 compareAarr把这个数组放进去,然后放进最小值
//alert(minKey);
// alert(minH); 试了一下取得最小的高度的那个成功
apin[i].style.Position = 'absolute'; // 没插件不用写
apin[i].style.top = minH + "px";
apin[i].style.left = apin[minKey].offsetLeft + "px";
compareAarr[minKey] += apin[i].offsetHeight; //+=的意思是 a+=b 就是a=a+b 解释:把a+b的值赋给a
}
// str += i+'=>'+apin[i].offsetHeight+'\n'; // '\n'换行 弹出来一下
}
//alert(str); // 弹出正常获得数值
// alert(compareAarr);试一下获得它们的高度成功offsetHeight
// var minH = Math.min.apply({},compareAarr);//用这个数函数取出最小高度那个的值 需要两个参数 填一个空对像({},compareAarr) 和(null,compareAarr)都行
// var minkey 用一个变量把它接走
// var minKey = getMinKey(compareAarr,minH); //调用下面写的函数 compareAarr把这个数组放进去,然后放进最小值
//alert(minKey);
// alert(minH); 试了一下取得最小的高度的那个成功
// apin[num].style.Position = 'absolute'; // 没插件不用写
// apin[num].style.top = minH + "px";
// apin[num].style.left = apin[minKey].offsetLeft + "px";
// 重新获取一下,第2,3小后面的,要更新一下数组里面的高度 compareAarr上面的数组 minKey这个是刚才获得最小的
// compareAarr[minKey] += apin[num].offsetHeight; //+=的意思是 a+=b 就是a=a+b 解释:把a+b的值赋给a
// alert(compareAarr);
// 重新获取一下
var minH = Math.min.apply({},compareAarr);
var minKey = getMinKey(compareAarr,minH);
// 最小的那个选出来了补上去,再往下第2小,3小的有后面加进来的数据还要补上去
apin[num+1].style.top = minH + "px";
apin[num+1].style.left = apin[minKey].offsetLeft + "px";
// 没插件不用写
for (var i=num;i<apin.length;i++) {
apin[i].style.Position = 'absolute';
drag(apin[i]);
}
}
// 获妈数组最小值的键值
function getMinKey(arr,minH){ //arr数组,minH最小高度
//for...in 语句用于对数组或者对象的属性进行循环操作。 使用 for ... in 循环遍历数组。
//for (变量 in 对象)
//{
// 在此执行代码
//}
for (key in arr) {
if (arr[key]==minH) { //当arr这个数组高度key=minH等于这个最小高度 这样就匹配到了
return key; //只要得到这个key就好,可以直接返回去函数
}
}
}
// 通过class选择元素 parent父级 className 类名
function getClassObj(parent,className){
var obj = parent.getElementsByTagName('*'); //'*' 这个星就是全部的意思
var result = []; //数组
for (var i=0;i<obj.length;i++) {
if (obj[i].className == className) { //如果obj[i].className == 传过来的className匹配到了
result.push(obj[i]); //push() 方法可向数组的末尾添加一个或多个元素,并返回新的长度。
}
}
return result;
}
</script>
</head>
<body>
<div id="main">
<div class="pin">
<div class="box">
<img src="https://www.qiquanji.com/data/img/dmj/201903061551840509108737.png"/>
</div>
</div>
<div class="pin">
<div class="box">
<img src="https://www.qiquanji.com/data/img/dmj/201903061551840509137756.png"/>
</div>
</div>
<div class="pin">
<div class="box">
<img src="https://www.qiquanji.com/data/img/dmj/201903061551840509164082.png"/>
</div>
</div>
<div class="pin">
<div class="box">
<img src="https://www.qiquanji.com/data/img/dmj/201903061551840510127179.png"/>
</div>
</div>
<div class="pin">
<div class="box">
<img src="https://www.qiquanji.com/data/img/dmj/201903061551840510188979.png"/>
</div>
</div>
<div class="pin">
<div class="box">
<img src="https://www.qiquanji.com/data/img/dmj/201903061551840510935198.png"/>
</div>
</div>
<div class="pin">
<div class="box">
<img src="https://www.qiquanji.com/data/img/dmj/201903061551840510435945.png"/>
</div>
</div>
<div class="pin">
<div class="box">
<img src="https://www.qiquanji.com/data/img/dmj/201903061551840511145712.png"/>
</div>
</div>
<div class="pin">
<div class="box">
<img src="https://www.qiquanji.com/data/img/dmj/201903061551840511150837.png"/>
</div>
</div>
<div class="pin">
<div class="box">
<img src="https://www.qiquanji.com/data/img/dmj/201903061551840511174371.png"/>
</div>
</div>
</div>
</body>
</html>
原文链接:https://www.qiquanji.com/post/7587.html
本站声明:网站内容来源于网络,如有侵权,请联系我们,我们将及时处理。
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

