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

发布于 2018-10-05 18:55:04 字数 921 浏览 1960 评论 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

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

文章
评论
84963 人气
更多

推荐作者

夢野间

文章 0 评论 0

doggiejohn

文章 0 评论 0

就此别过

文章 0 评论 0

初见终念

文章 0 评论 0

qq_rvKjBH

文章 0 评论 0

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