蒹葭苍沧
哦哦,谢谢大神指点
Chris_CW
"for(var i in val)" i应该在arr中,写错了,已解决?
慕慕0116261
已解决
梦绪
我验证了一下,可以使用。
Elvis_T
设置这个 getMinhIndex 变量存储数组中最小高度值的下标 for in 是遍历对象使用的方法 百度一搜就出来了
想取的名字都被占了
浏览器的兼容问题
想取的名字都被占了
还有clientWidth 是系统保留字啊, 你最好别用
小雪雪3789253
小雪雪3789253
响应式的页面应该是页面内容随着浏览器窗口的大小变化而变化,瀑布流应该是随着滚动条的滚动(高度变化)而变化
Artffgyttvaei
可能吧 你可以试试 实践是检验真理的唯一标准。
qq_付注东流的岂止是时间_03709607
这个问题我也遇到了,我研究了一下午。是offsetWidth的问题。我console获取到值为201,但是实际盒子宽度为202,故第一行最后一张图,超边。
解决方案:
修改前:oParent.style.cssText='width:'+aBoxW*cols+'px;margin:auto';
修改后:oParent.style.cssText='width:'+202*cols+'px;margin:auto';
正确显示,不谢!
qq_0_165
<div id="main">的postition声明为relative,这样它内部的元素进行绝对定位时的参照就是main了,而不是整个页面了。左边没有margin。
慕仙5237505
hArr[index]+=oBoxs[i].offsetHeight就是hArr[index]=hArr[index]+oBoxs[i].offsetHeight的意思!
另外这是个大循环 for (var i=0;i<oBoxs.length;i++) 遍历每一张图 视频中cols=6(所以hArr数组的长度为6),当i=5时,hArr数组保存了6张图的高(分别是266,286,160,146,155,147),当i=6时(这是进行第7次循环)执行else后面的代码,取出hArr中最小的值minH=146和索引index=3;然后把图片放在第4张图下面;
如果没有hArr[index]+=oBoxs[i].offsetHeight; 进行 i =7(第8次循环),获得的minH和index和之前是一样的,一直到i=oBoxs.length-1;结束循环 所有图片会放在同一位置!
实际在进行i=7时,第四张图下面已经有一张图了,必然hArr[3]的高度不再是146,而是146加上上一张图的高度
也就是hArr[3]=hArr[3]+oBoxs[6].offsetHeight;
ps:数组下标是从0开始的。
Holajulie
父盒子js设置宽度
奋斗的阿朵
这里是碰到等于该值的就返回i,所以哪个索引号小就先排在哪个后面。
Ace_____
找到最矮的那张的下标,然后得出它的offsetLeft,offsetHeight;最后第二组第一张图片定位为 top:offsetHeight+‘px’; left:offsetLeft+'px';
幕布斯1509990
for in 循环,在JavaScript中是遍历对象的可枚举属性,数组也是对象,由索引和元素值构成。数组索引是具有整数名称的可枚举属性,所以遍历数组时每次循环变量i的值是数组中当前元素的索引。
可以到各大网站看看文档资料啥的。
ArrMang
代码贴出来
白小纯King
' '里面是字符串,你的代码就是这个意思{width:(oBoxsW * cols)px +margin: 0 auto}你觉得这是一个正常的CSS样式吗?{width:(oBoxsW * cols)px;margin: 0 auto}应该是这样的
葡萄3
第24最后好像没加 'px'
慕后端7475465
arr 是一个数组,目的应该是为了获取数组里的arr的高度,有两种写法
1.arr[i]=Box[i].offsetHeight(若设外边距需注意)
2.arr.push(Box[i].offsetHeight)
不懂再回复
别净扯犊子
apply()是函数的非继承而来的方法,用途是在指定的作用域中调用函数,实际上等于设置函数体内的this对象的值,第一个参数是运行函数作用域,另一个是参数数组
慕粉1710212617
你可以看下前面有个if (i < cols)这里指的是第一行的所有列,当i>cols指的是其他行,oBoxs[i].style.top = minH+'px';是加在其他行上的
慕斯卡8256735
可是有时候打印出来console.log(OboxsH)高度有时候对有时候不对,好困惑。
qq_囧小兜_0
是第一列图像里面高度最小的那个图像的高度
Edge2J
var obj = boxs[index];
var left = obj.offsetLeft;
var height1 = obj.offsetHeight;
hArr[index]+=height1;
貌似height1应该是
boxs[i].offsetHeight才对,
boxs[index].offsetHeight求的始终是第一行的索引为index的值
cc_freestyle
offsetLeft 不包括padding
朝闻道夕
代码没错啊,你是不是只写了一个div啊
慕盖茨1199785
在这里无所谓吧,用Math.min.apply只会取到第一个最小值;如果非要取出所有的最小值,用循环吧...
慕田峪6997291
还有var boxarr=new Array();//存放属性值为box的数组
oelement=parent.getElementsByTagName('*');第一个分号改成逗号