鉴于某些 CSS 规则是针对特定 HTML 元素量身定制的(一些示例 - object-fit
for <img>
、<video>
等;stroke
以及fill
针对各种 SVG 元素的其他 SVG 规则),并且在用于其他元素时不太有意义:
将任何有效的CSS 规则应用于任何 HTML 元素是否合法?
任何规则都可以继承吗?
继承的值是什么,特别是当它是从使用特定属性没有意义的元素继承的情况下?
我的具体问题是这样的。我正在开发一个带有模块化 CSS 的按钮组件。在这个按钮内,我可能有一个用于显示图标的 SVG 元素。我希望能够从组件外部将某些样式应用于图标(即描边和填充),同时保留适当的封装(因此深度选择器是禁忌)。
为了解决这个问题,我将 SVG 设置为从按钮继承描边和填充。如果我现在将这些属性应用到按钮,图标就会继承它们,并且我会得到所需的结果!
然而,这让我想知道我所做的是否有效以及其他浏览器是否会有相同的行为。
这似乎是常识,但要找到明确的答案却出人意料地困难。如果有人可以向我指出规范的摘录,甚至可能是一些支持表,我会很高兴!
考虑到我编写代码的方式,显示 100% 准确的示例有点太多了,但基本上我是在问这是否有效:
.icon {
stroke: inherit;
fill: inherit;
}
.button {
stroke: #FFF;
fill: #999;
}
<button class="button">
<svg class="icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 18 18">
<g stroke-width="2" transform="translate(1 1)">
<path d="M14 2L2 14"/>
<circle cx="8" cy="8" r="8"/>
</g>
</svg>
<span>My button</span>
</button>
炎炎设计
守着星空守着你
相关分类