为什么我用js添加内容,最后用offsetHeight获取的高度只有81,不能实现效果
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Document</title> <link rel="stylesheet" href="../css/index.css"> <script src="https://cdn.bootcss.com/jquery/3.3.1/jquery.js"></script> <script src="../js/javascript.js"></script> </head> <body> <div class="wrap" id="wrap"> </div> </body> </html>
* { padding: 0; margin: 0; font-family: "微软雅黑"; font-size:16px; border: none; } body { background: #ddd; } a { text-decoration: none; color: #444; } a:hover { color: #999; } img { border: none; } .wrap { width: auto; height: auto; margin: 0 auto; position: relative; } .wrap div { float: left; box-sizing: border-box; /*还有content-box*/ width: 280px; height: auto; padding: 10px; margin: 10px; border-radius: 10px; background: #fff; /*position: absolute;*/ } .wrap div img { width: 100%; } .wrap div a { font-size: 18px; font-weight: bold; display: block; /*这里要把它设置为行级元素才能用text-align,而且不能用margin*/ text-align: center; line-height: 40px; }
// 交互设置 var data = [{ "src" : "1.png", "title" : "第一怪 竹筒当烟袋" }, { "src" : "2.png", "title" : "第二怪 草帽当锅盖" }, { "src" : "3.png", "title" : "这边下雨那边晒" }, { "src" : "4.png", "title" : "第四怪 四季服装同穿戴" }, { "src" : "5.png", "title" : "第五怪 火车没有汽车快" }, { "src": "6.png", "title": "第六怪 火车不通国内通国外" },{ "src": "7.png", "title": "第七怪 老奶奶爬山比猴快" },{ "src": "8.png", "title": "第八怪 鞋子后面多一块" },{ "src": "9.png", "title": "第九怪 脚趾四季露在外" },{ "src": "10.png", "title": "第十怪 鸡蛋栓着卖" },{ "src": "11.png", "title": "第十一怪 粑粑叫饵块" },{ "src": "12.png", "title": "第十二怪 花生蚕豆数着卖" },{ "src": "13.png", "title": "第十三怪 三个蚊子一盘菜" },{ "src": "14.png", "title": "第十四怪 四个老鼠一麻袋" },{ "src": "15.png", "title": "第十五怪 树上松毛扭着卖" },{ "src": "16.png", "title": "第十六怪 姑娘叫老太" },{ "src": "17.png", "title": "第十七怪 小和尚可以谈恋爱" },{ "src": "18.png", "title": "第十八怪 背着娃娃谈恋爱" }] var addBaseContent = function (wrap) { for (var i=0; i<data.length; i++) { wrap.innerHTML += '<div><img src="../images/'+data[i].src+'" alt=""><a href="">'+data[i].title+'</a></div>'; }; }; var getMinIndex = function (arr, ht) { for (index in arr) { if (arr[index] == ht) { return index; } /*else { //这里不能加return false会结束循环 return false; }*/ } } var waterfall = function (wrap, boxes) { var boxesWidth = boxes[0].offsetWidth + 20, // windowWidth = window.innerWidth,这个方法也可以获得窗口的宽度; windowWidth = document.documentElement.clientWidth, boxesNum = Math.floor(windowWidth / boxesWidth); wrap.style.width = boxesNum * boxesWidth + 'px'; var elementArr = new Array(); for (var i=0; i<boxes.length; i++) { if (i < boxesNum) { elementArr[i] = boxes[i].offsetHeight + 20; } else { var minHeight = Math.min.apply(null, elementArr), minIndex = getMinIndex(elementArr, minHeight), minLeft = boxes[minIndex].offsetLeft - 10; //这里写错了,写成了数组 boxes[i].style.position = "absolute"; boxes[i].style.left = minLeft + 'px'; boxes[i].style.top = minHeight + 'px'; elementArr[minIndex] += boxes[i].offsetHeight + 20; //这个数组本身就是高度的值 } } } window.onload = function () { var wrap = document.getElementById('wrap'); //添加初始元素 addBaseContent(wrap); var boxes = wrap.getElementsByTagName('div'); console.log(boxes[1].offsetHeight) //打印出来的高度只有81 waterfall(wrap, boxes); console.log(boxes[0].offsetHeight) }
0
收起
正在回答 回答被采纳积分+1
1回答
前端小白入门系列课程
- 参与学习 人
- 提交作业 11218 份
- 解答问题 36713 个
从一个不会编程的小白到一个老司机是需要过程的,首先得入门,学习基础知识,然后才能进阶,最后再到精通,本专题是你走进前端世界的不二选择!
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星