跨浏览器获取DIV宽度和高度的方法?
我使用 jQuery。我正在尝试找到一种方法来获取 DIV 元素的当前宽度和高度,即使它们设置为“自动”。我找到了很多方法来做到这一点,但没有方法在 IE 中返回相同的宽度。重要的是,此方法是跨浏览器的,因为如果在不同的浏览器中返回不同的数字,它将破坏页面的布局。
.width() 和 .height() 不起作用,因为在 IE 中,会减去填充(例如 width() 返回 25,其中宽度为 30,填充为 5)。
.outerWidth() 和 .outerHeight() 也不一致。当它们在 FF 中工作 IE(不管你信不信)时,填充会再次添加到全宽度(例如,outerWidth() 在 FF 中返回 110,其中宽度为 100px,填充为 10px)。
有没有办法摆脱这种混乱而无需编写复杂的浏览器检查?谢谢!
I use jQuery. I'm trying to find a way to get the current width and height of a DIV element, even if they're set to "auto". I've found many ways to do this, but no method returns the same width in IE. It is important that this method is cross-browser, as it will break the layout of the page if different numbers are returned in different browsers.
.width() and .height() do not work because in IE, padding is subtracted (e.g. width() returns 25 where width is 30 and padding is 5).
.outerWidth() and .outerHeight() are not consistent either. While they work IE (believe it or not) in FF, the padding is added again to the full width (e.g. outerWidth() returns 110 in FF where width is 100px and padding is 10px).
Is there any way out of this mess without writing complex browser checks? Thanks!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
在我看来,您需要在页面中添加 DOCTYPE 来强制 IE 进入“标准兼容”而不是“怪癖”模式。请参阅怪异模式和严格模式。
另请参阅
width()
:和
outerWidth()
:It sounds to me that you need to add a DOCTYPE to your page to force IE into "standards compliant" rather than "quirks" mode. See Quirks mode and strict mode.
Also see
width()
:and
outerWidth()
:我不知道这是否有帮助,但以下片段将设置内部元素的高度,以便它完全填充可用空间。内部元素 (e) 可以嵌套在具有设定高度的参考元素 (r) 内的任意深度。该片段考虑了 e 和 r 之间所有兄弟姐妹的高度。这两个参数都可以作为 DOM 元素或 JQuery 对象传递。
I don't know whether this helps, but the following fragment will set the height of an inner element so that it completely fills the available space. The inner element (e) can be nested at any depth inside a reference element (r) which has a set height. The fragment takes into account the heights of all siblings between e and r. Both parameters can be passed either as DOM elements or JQuery objects.