JavaScript 通过 offsetHeight 属性检测元素是否显示

发布于 2018-10-05 18:55:04 字数 921 浏览 1949 评论 0

一直都有一个困惑,JavaScript 代码编程是如何检测一个元素是否显示的,很天真的检测方式是如果元素是显示的(在网页中已存在或是占用了空间),通过检测这个元素的 CSS 样式值 display

var incorrectIsVisible = window.getComputedStyle(someElement, null).getPropertyValue('display'); // "inline", "inline-block", "block", etc.

注意,我不是检测他的透明度,因为在网页中,透明度为 0 即看不见的元素仍然占用了网页的空间,上面代码的问题是,你可以获取一个子元素的 CSS 样式,但是这可能不是其父元素的属性 display: none,例如如果子元素的 display 设置为 inline-block,但是父元素设置 displaynone,那么他的子元素任然不会显示出来,奇怪的是检测子元素的 offsetheight 属性的值却不是 0,如果他没有设置 displaynone 的话。

var correctIsVisible = someElement.offsetHeight; // 0 for hidden, more than 0 for displaying

如果一个元素是另一个元素的子元素,他设置 displaynone,那么他的 offsetheight 属性值就是 0,但是请记住,这里没有讨论透明度元素的显示问题,因为从技术上来说,即使设置透明度为 0,他任然会占用网页的空间。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

JSmiles

生命进入颠沛而奔忙的本质状态,并将以不断告别和相遇的陈旧方式继续下去。

0 文章
0 评论
84961 人气
更多

推荐作者

醉城メ夜风

文章 0 评论 0

远昼

文章 0 评论 0

平生欢

文章 0 评论 0

微凉

文章 0 评论 0

Honwey

文章 0 评论 0

qq_ikhFfg

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文