包含文本的动态插入div的宽度

时间:2012-10-18 15:19:57

标签: javascript jquery html css dom

我有一个脚本,可以在dom中动态插入包含文本的div。文本内容事先不知道。

我需要知道这个div的宽度,但似乎不能信任document.defaultView.getComputedStyle(node, "").getPropertyValue("width")或node.offsetWidth的返回值。

我使用setInterval来记录它,并且值随时间而变化。例如,在我的情况下,它以929px开始,然后更改为908px。

这个div处于绝对位置,它有空白nowrap,所以我不认为它被其他dom元素“推”或者插入后它会以某种方式改变。

是否有一种优雅的方法来检索宽度,或者一旦返回值稳定,我是否必须使用丑陋的setTimeout来检索它?

4 个答案:

答案 0 :(得分:1)

尝试:

yourDOMElement.getClientBoundingRect()

这将返回一个具有top,left,right,bottom,height和 width 属性的对象。这应该是跨浏览器。

注意:如果您要使用返回的位置属性(顶部,左侧,右侧,底部,高度),请在必要时考虑滚动偏移。

更新:要确保此功能适用于没有宽度/高度属性的旧浏览器,请计算它从左/上减去右/下。

答案 1 :(得分:1)

视口可以因滚动条而改变其大小。滚动条出现后,文档将无法再使用其宽度。在通过将overflow: scrolloverflow-y:scroll添加到<html>元素来衡量尺寸之前,强制滚动条存在。

默认情况下,块级元素的大小是其容器宽度减去边距和填充(即使它是position ed absolute ly),这最终是wiewport宽度,除非您设置沿途的某个固定宽度。

答案 2 :(得分:0)

使用jQuery,你应该能够做到这一点:

var width = $("div-selector").width();

答案 3 :(得分:-2)

这很容易吗?

在浏览器中打开页面,然后按f12。使用firefox,顶部有一个“inspect元素”按钮,底部有一个chrome。单击它并将鼠标悬停在其上。这应该给你px的高度和宽度。从来没有错过我。

如果它仍未显示,请单击它,您可以在控制台的css面板中看到它。