首页  >  文章  >  web前端  >  为什么“Element.style”为内联样式表样式和主样式表样式返回不同的值?

为什么“Element.style”为内联样式表样式和主样式表样式返回不同的值?

Susan Sarandon
Susan Sarandon原创
2024-11-10 21:28:02818浏览

Why Does `Element.style` Return Different Values for Inline and Master Stylesheet Styles?

显示主样式表中的样式检索差异

通过 JavaScript 的 Element.style 属性访问元素的样式时,请务必注意以下方面的潜在差异基于样式声明方式的行为。

在所描述的场景中,初始 display:none 样式在 DIV 元素上内联设置。但是,当初始样式移动到主样式表时,该元素被隐藏。有趣的是,访问元素的 style.display 属性返回一个空字符串,而通过内联样式访问同一属性则返回“none”。

此行为归因于 声明的样式 之间的区别和计算样式。声明的样式是内联或通过样式表显式分配给元素的样式。另一方面,计算样式代表元素的最终渲染样式,考虑了所有相关因素,包括继承和级联样式。

访问 Element.style 时,您仅获得声明的样式。要获取反映应用于元素的实际样式的计算样式,必须使用 window.getCompulatedStyle() 方法。该方法提供了元素样式的全面表示,包括受继承、级联和浏览器默认值影响的属性。

通过使用 getCompulatedStyle(),您可以可靠地检索元素的显示样式,即使它最初是通过主样式表隐藏的:

const element = document.getElementById('myDiv');
const display = getComputedStyle(element).getPropertyValue('display');
// display will now return 'none' or 'block', as appropriate

这种更正的方法可确保您访问元素的准确计算样式,无论其样式如何声明。

以上是为什么“Element.style”为内联样式表样式和主样式表样式返回不同的值?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn