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

能否通过类为SVG的<use>标签设置宽高?

如何通过CSS类为SVG 标签设置图标尺寸

直接给<use>元素添加类来设置width/height不会生效,因为<use>只是引用容器,图标实际显示的尺寸由外层的<svg>元素控制。这里有两种可行方案:

方案1:将类移至外层<svg>元素

把样式类直接加在包裹<use>的<svg>上,这样就能直接控制图标尺寸:

.testSvgIcons {
    width: 30px;
    height: 30px;
    fill: green;
}
<svg style="display: none;">
    <symbol id="tick-icon" viewBox="0 0 515.556 515.556">
        <path d="m0 274.226 176.549 176.886 339.007-338.672-48.67-47.997-290.337 290-128.553-128.552z"/>
    </symbol>
</svg>

<svg class="testSvgIcons">
    <use href="#tick-icon"></use>
</svg>

方案2:用CSS选择器关联父元素(无需修改HTML)

如果不想调整HTML结构,可以利用:has()选择器选中包含<use>的<svg>元素,为其设置尺寸:

.testSvgIcons {
    fill: green;
}

/* 选中包含<use>的.testSvgIcons元素 */
svg.testSvgIcons:has(> use) {
    width: 30px;
    height: 30px;
}
<svg style="display: none;">
    <symbol id="tick-icon" viewBox="0 0 515.556 515.556">
        <path d="m0 274.226 176.549 176.886 339.007-338.672-48.67-47.997-290.337 290-128.553-128.552z"/>
    </symbol>
</svg>

<svg class="testSvgIcons">
    <use href="#tick-icon"></use>
</svg>

原理说明

<symbol>本身没有默认尺寸,当通过<use>引用时,需要外层<svg>提供可视区域(通过width/height或viewBox)来确定图标显示大小。<use>元素的尺寸样式仅调整自身引用区域的范围,不会影响内部图标的缩放,所以直接给<use>加尺寸样式无法达到预期效果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 20:10:25