【发布时间】:2020-07-07 15:53:55
【问题描述】:
鉴于某些 CSS 规则是针对特定 HTML 元素量身定制的(一些示例 - object-fit 用于 <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>
【问题讨论】:
标签: html css specifications