Javascript - object.offsetTop and .offsetLeft gives 0



我正试图通过使用Javascript来获取元素的位置。我已经使用了clientTopoffsetHeightwindow.getComputedStyle(box1).top以及介于两者之间的一些东西,但当我控制台日志时,我得到的只是0。元素几乎被放置在页面的中间,因此结果中除了0之外应该是所有元素。

HTML:

<body>
<h1>Box placement</h1>
<div id='box1' class='box center green size200'>
</div>
</body>

JS:

let box1 = document.querySelector('#box1');
let browserHeight = window.innerHeight;
let browserWidth = window.innerWidth;
let boxHeight = box1.clientTop;
let boxWidth = box1.offsetLeft;
function printInfo() {                               //Result
console.log(browserHeight);                      //1185
console.log(browserWidth);                       //1266
console.log(boxHeight);                          //0
console.log(boxWidth);                           //0
console.log(window.getComputedStyle(box1).top);  //auto
console.log(box1.offsetLeft);                    //0
}
printInfo();

你知道我哪里可能出错了吗?下面也是对CSS的一个改动:http://jsfiddle.net/1f23v9nj/1/

这种行为是由less.js库引起的。若你们并没有真正需要它的特性,那个么就不要包含它——问题已经解决了。

如果确实需要它——原因从问题中的代码中看不出来——那么等待less.pageLoadFinished承诺解决,如下所示:

less.pageLoadFinished.then(function () {
'use strict';
let box1 = document.querySelector('#box1');
// ... etc
});

查看更新的小提琴

最新更新