【发布时间】:2013-12-16 20:34:43
【问题描述】:
我有一个OpenLayers 地图(SVG 渲染器),其中包含许多气泡/特征,当我对它们进行聚类时,我还通过OpenLayers.Style 将自定义fontSize 样式应用于它们。
另一方面,我有一个像* { font-size: 14px; } 这样的重置规则。 circle、text 和 tspan 元素——地图上的气泡,它们都继承了 * 的字体大小属性,然后超过了 OpenLayers 应用到的 font-size 的内联属性text 元素。
例如,如果我通过 Chrome 开发者工具从上述任何元素中临时删除继承的 font-size,那么一切都会好起来的。
任何想法我应该如何克服这个问题?请注意:
- 字体大小是动态的。我在 OpenLayers 对特征进行聚类时计算它们。所以我不能对它们应用静态的
class或style。 - 我不想使用
:not选择器 - 如果我从
*中删除font-size,那么您建议如何将其应用于所有其他元素? - CSS 中有没有类似
!not-important或do-not-inherit的东西?
实际的text 节点看起来像这样——准系统:
<text font-size="19.2px">
<tspan>19</tspan>
</text>
【问题讨论】:
-
为什么不能简单地以声明方式将所需样式应用于问题中的元素?这将覆盖使用 * 选择器应用的样式。
-
@ChrisHardie 它们是动态的,我不能对它们应用
class或style。当集群发生时,我通过 OpenLayers 中的 JS 计算它们。 -
啊,我不熟悉 OpenLayers。将这些动态元素包装在包含元素中,然后将字体大小应用于该容器呢?
-
如果您使用
*重置字体大小,您实际上是在阻止继承。 -
如果你尝试 `body{ font-size:14px;} ` 或者至少是高级别的父级而不是
*