Javascript 当一个元素内有绝对位置的子元素时,获取该元素的全宽

Javascript 当一个元素内有绝对位置的子元素时,获取该元素的全宽,javascript,jquery,html,css,Javascript,Jquery,Html,Css,JS小提琴: 假设我有一个元素。外部具有100px的宽度和位置:相对。它有一个具有位置的内部元素:绝对和左:95px。即子元素超过父元素的宽度 现在,在JQUery中,如果我尝试使用$('.outer').outerWidth()获取父对象的宽度返回100 但是我如何获得外部元素的全宽(由于绝对定位的子元素,它明显大于100) 是否有内置的方法,或者我必须手动计算(即,将每个子元素的宽度添加到父元素的宽度中,以计算出整个宽度)?您已将宽度设置为100px,并且子元素的位置为绝对,因此它不会影响其

JS小提琴:

假设我有一个元素
。外部
具有100px的宽度和
位置:相对。它有一个具有
位置的内部元素:绝对
左:95px。即子元素超过父元素的宽度

现在,在JQUery中,如果我尝试使用
$('.outer').outerWidth()获取父对象的宽度返回100

但是我如何获得外部元素的全宽(由于绝对定位的子元素,它明显大于100)


是否有内置的方法,或者我必须手动计算(即,将每个子元素的宽度添加到父元素的宽度中,以计算出整个宽度)?

您已将宽度设置为100px,并且子元素的位置为绝对,因此它不会影响其父元素的宽度。父级的宽度仍然是真正的100px。

您可以使用属性
scrollWidth
scrollHeight

如果您使用的是jQuery

$('.outer').get(0).scrollWidth

jQuery不提供对javascript属性
scrollWidth
的访问,因此必须使用jQuery访问DOM元素

jQuery是一种实现DOM元素的方法

因此,使用jQuery的解决方案是
$('.outer').get(0).scrollWidth


如果您使用origin javascript,解决方案将是
document.getElementsByClassName('outer')[0]。scrollWidth

我的感觉也是如此。如果子元素处于绝对位置,则它们不会增长父元素周期。如果你临时修改你的CSS,在它们周围加上边框,你很可能会看到孩子超出了父母的限制,而不是成长。摆弄一下,当孩子完全处于位置时,父母不会成长:恐怕是最后一个选择了。唯一简单的方法是编写一个递归函数来检查所有的子项(直到最深的子项),并返回顶部和左侧的最小值,右侧和底部的最大值。这太棒了!在我这里的例子中似乎起作用:但是,应该注意的是,尽管它确实计算了Veera的要求,但是
.outer
元素本身仍然以100px的宽度呈现。当您将其定位设置为
relative
时,它不会自动调整大小。您必须编写代码来完成它。