如何获取元素's”;指定的“;样式而不是计算样式

How to get an element's "specified" style instead of computed style

本文关键字:样式 计算 何获取 获取 元素      更新时间:2024-01-23

在不包含viewport元标记的网页上,大多数移动浏览器会将页面上的部分或全部字体"提升"到大于css指定的大小。例如,在移动Safari上,指定大小的7px将被提升到类似12px的大小。

您可以使用getComputedStyle读取提升后的值。我的问题是,是否有可靠的方法来读取未增强值?也就是说,如果字体增加到12,我想知道它是从7开始的。

Webkit有一个不推荐使用的函数来获取元素的所有样式表规则:window.getMatchedCSSRules(<<element>>)。您可以使用它来获取规则列表,并在其中循环以打印或处理每个规则的属性。您还需要考虑元素的style属性。

要处理font-size场景,我想最好的方法是获取适用于元素的所有规则,按优先级对它们进行排序(记住要考虑style属性和!important标志,然后选择值。

不过,这并不完全可靠,因为它是一个Webkit函数,而且正在退出。这里有很多关于如何制定规则的讨论。一旦你有了元素的规则,你只需要挑选出你需要的特定信息。

这里只是一个快速答案。简而言之:你不能用今天的API获得指定的样式。我能够通过使用文本大小调整(前缀为-webkit-用于Safari)暂时关闭字体增强功能来解决我的特定问题。