You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

请教SVG中该CSS多类组合样式结构的专业名称

SVG中defs内CSS类写法解析

你看到的这种写法不是SVG特有的特殊语法,只是图形编辑器为了压缩文件体积,把CSS分组选择器的空格、换行全部删掉了,看起来像是类之间互相引用,本质就是普通的CSS层叠规则。

先把压缩的CSS格式化还原:

.cls-1 {
  stroke-width: 2.8px;
}
.cls-1, .cls-2, .cls-3 {
  fill: none;
  stroke: #FFF;
}
.cls-1, .cls-3 {
  stroke-miterlimit: 10;
}
.cls-2 {
  stroke-linecap: round;
  stroke-linejoin: round;
}
.cls-2, .cls-3 {
  stroke-width: 2.5px;
}

关于你问的三个概念:

  • 这属于cascading(层叠):同一个元素的多个样式规则会按照优先级叠加生效。比如.cls-1的stroke-width先被设为2.8px,后续没有其他规则覆盖这个属性,所以最终生效;.cls-2的stroke-width则取后面分组规则里的2.5px。
  • 和inheritance(继承)无关:继承是元素从父元素继承样式,这里的样式都是直接给类定义的,没有继承逻辑。
  • 和shadow-tree(影子树)无关:影子树是Web Components的特性,SVG的<defs>只是存放可复用元素的容器,和这种CSS写法完全不相关。

实际样式生效示例:

给元素加.cls-1类后,它的最终样式是:

  • stroke-width: 2.8px
  • fill: none
  • stroke: #FFF
  • stroke-miterlimit: 10

内容的提问来源于stack exchange,提问作者Jon Pearce

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 08:30:35