首页 > web前端 > css教程 > 正文

为什么 jQuery 的 `height()` 和 `width()` 对于具有 `display:none` 的元素返回非零值?

Patricia Arquette
发布: 2024-10-28 06:58:29
原创
438 人浏览过

Why Does jQuery's `height()` and `width()` Return Non-Zero Values for Elements with `display:none`?

jQuery 的非传统 Height() 和 Width() 行为与“display:none”

jQuery 的 height() 和 width() 方法是广泛用于确定网页上元素的可见尺寸。然而,在处理设置了 CSS 属性“display:none”的元素时,似乎会出现意外的行为。

问题

传统上,人们相信具有“display:none”的元素的高度和宽度为零。然而,jQuery 的情况并非总是如此。考虑以下示例:

<code class="html"><div id="target" style="display:none;">
  a
</div></code>
登录后复制
<code class="css">alert($("#target").height());</code>
登录后复制

在此示例中,“目标”元素的高度不为零,而是一个非零值。这种不一致引发了一个问题:为什么带有“display:none”的元素有时会在 jQuery 中返回非零高度和宽度?

答案

要理解这种行为,我们需要深入研究 jQuery 的 height() 和 width() 方法的内部工作原理。当元素的可见 offsetWidth 为 0(表示它是“隐藏”)时,jQuery 会尝试计算其实际尺寸。它通过暂时覆盖元素的 CSS 属性来实现此目的:

  • position: "absolute"
  • visibility: "hidden"
  • display: "block"

通过这些修改,jQuery 会检索元素的高度,并根据需要考虑边框和填充。一旦确定了高度,jQuery 就会恢复原始的 CSS 属性,确保不会发生可见的更改。

此过程允许 height() 和 width() 对于隐藏元素正确工作,只要它们的父元素可见。本质上,jQuery 模拟了在文档流之外显示元素、检索其尺寸,然后再次隐藏它的行为,所有这些都在幕后通过单个操作完成。这消除了开发人员手动显示和隐藏元素来获取其尺寸的需要。

以上是为什么 jQuery 的 `height()` 和 `width()` 对于具有 `display:none` 的元素返回非零值?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!