我可以轻松地“设置”元素的 offsetWidth 吗?

Ste*_*hen 5 javascript dhtml width

注意:我知道 offsetWidth 是只读的

我正在尝试使弹出的“div”覆盖tr具有完全相同宽度的元素。

但是,我对如何设置我的div使其widthoffsetWidth完全相同感到困惑tr

计算结果类似于:

div.width = tr.offsetWidth - div.paddingWidth - div.marginWidth
Run Code Online (Sandbox Code Playgroud)

但肯定有更好的方法(因为我只能想到以两个为一组来获取填充和边距偏移......)

具体来说,如果可能的话,我想要 YUI 2 的答案。

Sim*_*hke 3

如果您将 的div边距和填充清零,那么类似以下的内容应该可以工作:

YAHOO.util.Dom.setStyle(div, 'width', tr.offsetWidth + 'px');
Run Code Online (Sandbox Code Playgroud)

根据您处理边界的方式,divtr可能希望进行分配tr.clientWidth

然后,您可以根据需要在父/子元素上设置任何边距/填充,div以实现所需的外观。

确定您想要做什么的关键是准确理解什么clientWidthoffsetWidth度量,并且width元素的 CSS 是其内容区域,不包括其上定义的任何边距、边框和填充(请参阅此处的 W3C 框模型) 。

您可以通过从以下位置查询来将填充等包含在您的计算中: