2011-02-02 78 views
2

注:我知道offsetWidth只我可以轻松地“设置”元素的offsetWidth吗?

我试图做一个弹出“格”覆盖一个tr完全相同的宽度元素被读取。

不过,我难倒如何设置我的divwidth使其offsetWidth是完全相同的tr

计算看起来是这样的:

div.width = tr.offsetWidth - div.paddingWidth - div.marginWidth 

但肯定有一个更好的办法(因为我只能想到得到的填充和保证金偏移量的两组...)

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

+0

它在我看来像你已经回答了你自己的问题。我唯一的建议是分别获得div的计算左右边距和填充值,因为它们可能都不相同。 – 2011-02-02 03:23:50

+0

@Matt Ball:好的,所以我将标题改为_easily_设置宽度。我只是很难相信它没有内置到某个库(即使它不是YUI) – Stephen 2011-02-02 03:31:46

回答

2

如果零出你的div的保证金和垫衬,然后像下面应该工作:

YAHOO.util.Dom.setStyle(div, 'width', tr.offsetWidth + 'px'); 

取决于你是如何处理的边框在您divtr你可能要分配tr.clientWidth代替。

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

的关键在于制定出你想要做的是了解什么clientWidth and offsetWidth measure什么,一个元素的CSS width是它的内容区域,不包括任何空白,边框,并在其上(see the W3C box model here)定义的填充。

你可以从

0

查询它包括在计算中的填充等,这是一个有点乱,我可能会downvoted的建议,但你可以做到这一点的一种方式,而不使用您的保证金或填充搞乱是将div的宽度设置为已知值,然后找到该div与div的offsetWidth之间的差异。这应该告诉你如何设置宽度以使其适合。

div.style.width = '20px' 
diff = div.offsetWidth - 20; 
div.style.width = tr.offsetWidth - diff; 

这实在是混乱,但你不必在意填充,保证金或边框这样。

相关问题