无法获得div的偏移量

时间:2018-11-15 10:07:52

标签: javascript css

这是我的getoffset js代码,用于获取div的宽度和左

  var objRedPacketDivStyle = document.getElementById("styRedPacketAppear");
        var objOffset = objRedPacketDivStyle.offset();
        var intWidth = objOffset.offsetWidth;
        var objWidthStart = objOffset.offset.left;
        var objWidthEnd = objWidthStart + intWidth;
        alert(objWidthStart + objWidthEnd);

这是我的div和CSS

<div class="styRedPacketAppear" id="styRedPacketAppear"></div>

#styRedPacketAppear {
position: fixed;
top: 0;
left: 0;
width: 100%;
z-index: 98;
pointer-events: none;
}

2 个答案:

答案 0 :(得分:4)

此方法不起作用,因为.offset()jQuery方法。由于您没有jquery,因此需要使用香草javascript来实现。

您可以使用:

  • element.offsetWidth“将元素的布局宽度返回为整数。” -MDN
  • element.offsetLeft”返回当前元素的左上角在HTMLElement.offsetParent节点内向左偏移的像素数。” -MDN

使用这两个属性可以解决您的问题:

var objRedPacketDivStyle = document.getElementById("styRedPacketAppear");
// Remove this: var objOffset = objRedPacketDivStyle.position.offset();
var intWidth = objRedPacketDivStyle.offsetWidth;
var objWidthStart = objRedPacketDivStyle.offsetLeft;
var objWidthEnd = objWidthStart + intWidth;
alert(objWidthStart + objWidthEnd);
#styRedPacketAppear {
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  z-index: 98;
  pointer-events: none;
}
<div class="styRedPacketAppear" id="styRedPacketAppear"></div>

答案 1 :(得分:0)

offsetTop属性返回相对于offsetParent元素顶部的顶部位置(以像素为单位)。 返回的值包括: -元素的最高位置和边距 -offsetParent元素的顶部填充,滚动条和边框。

#test {
  top: 100px;
  margin: 10px;
  padding: 10px;
  width: 300px;
  position: fixed;
  border: 5px solid black
}

var testDiv = document.getElementById("test");
document.getElementById("demo").innerHTML = testDiv.offsetTop;

Result-offsetTop is: 110