链接到 <symbol> 时无法更改 SVG <use> 图标大小
Cannot Change SVG <use> icon size when linked to <symbol>
我想在我的标记中使用 SVG 符号,但我无法获得 CSS 来增加元素内呈现的符号的大小?
我在一组标签中定义了一个 Twitter 徽标,然后我用 xlink:href 内部使用标签引用它。该图标正在显示,但是当我将 CSS 添加到包含该元素的 #box1 div 时,该符号的大小没有增加或减少,并且似乎仅以 viewBox 大小呈现。
此外,当我将 SVG 元素悬停在开发工具上时,它本身以 300 x 150 像素呈现 - 但代码中没有这些测量值。
我真的很困惑——任何帮助都会很棒。
#box1 {
height: 10rem;
width: 10rem;
}
<defs style="display: none;">
<svg id="twitter" viewBox="0 0 19.19 15.95">
<symbol id="twitter-symbol"><title>twitter</title>
<path id="twitter-path" d="M19.19,1.92a8.76,8.76,0,0,1-2.28.64A3.9,3.9,0,0,0,18.63.32a6.87,6.87,0,0,1-2.52,1A3.87,3.87,0,0,0,13.23,0,4,4,0,0,0,9.32,4,3.41,3.41,0,0,0,9.44,5,11,11,0,0,1,1.32.72a4.29,4.29,0,0,0-.52,2A4,4,0,0,0,2.56,6.12,3.61,3.61,0,0,1,.76,5.6v0a4,4,0,0,0,3.16,4,4.35,4.35,0,0,1-1,.16,4.9,4.9,0,0,1-.76-.08,4,4,0,0,0,3.68,2.8A7.79,7.79,0,0,1,.92,14.19a6.78,6.78,0,0,1-.92,0A10.83,10.83,0,0,0,6,16c7.24,0,11.19-6.16,11.19-11.47V4a6.83,6.83,0,0,0,2-2" fill="#000">
</path>
</symbol>
</svg>
</defs>
<div id="box1">
<svg>
<use xlink:href="#twitter-symbol"/>
</svg>
</div>
<defs>
是一个svg元素。它总是在 svg 中。我做了一些更改,现在可以使用了。请运行代码看看我做了什么
#box1 {
height: 10rem;
width: 10rem;
}
#twitter{display:none;}
<svg id="twitter">
<defs>
<symbol id="twitter-symbol"><title>twitter</title>
<path id="twitter-path" d="M19.19,1.92a8.76,8.76,0,0,1-2.28.64A3.9,3.9,0,0,0,18.63.32a6.87,6.87,0,0,1-2.52,1A3.87,3.87,0,0,0,13.23,0,4,4,0,0,0,9.32,4,3.41,3.41,0,0,0,9.44,5,11,11,0,0,1,1.32.72a4.29,4.29,0,0,0-.52,2A4,4,0,0,0,2.56,6.12,3.61,3.61,0,0,1,.76,5.6v0a4,4,0,0,0,3.16,4,4.35,4.35,0,0,1-1,.16,4.9,4.9,0,0,1-.76-.08,4,4,0,0,0,3.68,2.8A7.79,7.79,0,0,1,.92,14.19a6.78,6.78,0,0,1-.92,0A10.83,10.83,0,0,0,6,16c7.24,0,11.19-6.16,11.19-11.47V4a6.83,6.83,0,0,0,2-2" fill="#000">
</path>
</symbol>
</defs>
</svg>
<div id="box1">
<svg viewBox="0 0 19.19 15.95" width="24">
<use xlink:href="#twitter-symbol"/>
</svg>
</div>
希望对您有所帮助。
您在 HTML 中使用内联 SVG 代码,因此我相信 SVG 路径需要在其中定义一个视图框。例如,如果您在 HTML SVG 标签中添加 viewBox="0 0 60 55",您会注意到尺寸将开始调整。所以编辑你的 HTML
的这一部分
<svg viewBox="0 0 60 55">
<use xlink:href="#twitter-symbol"/>
</svg>
为了扩展您发现尺寸列为 300x150 的注释,这是适用于 HTML 内联 SVG 代码的默认标准尺寸(根据 HTML5 规范)。这有时会因浏览器而异。
请记住,处理 SVG 时可以使用几种不同的方法。查看下面的指南,其中他们对 SVG 给出了很好的 运行 评价以及如何操纵它的大小。您可能会找到您更喜欢使用的替代方法。
我想在我的标记中使用 SVG 符号,但我无法获得 CSS 来增加元素内呈现的符号的大小?
我在一组标签中定义了一个 Twitter 徽标,然后我用 xlink:href 内部使用标签引用它。该图标正在显示,但是当我将 CSS 添加到包含该元素的 #box1 div 时,该符号的大小没有增加或减少,并且似乎仅以 viewBox 大小呈现。
此外,当我将 SVG 元素悬停在开发工具上时,它本身以 300 x 150 像素呈现 - 但代码中没有这些测量值。
我真的很困惑——任何帮助都会很棒。
#box1 {
height: 10rem;
width: 10rem;
}
<defs style="display: none;">
<svg id="twitter" viewBox="0 0 19.19 15.95">
<symbol id="twitter-symbol"><title>twitter</title>
<path id="twitter-path" d="M19.19,1.92a8.76,8.76,0,0,1-2.28.64A3.9,3.9,0,0,0,18.63.32a6.87,6.87,0,0,1-2.52,1A3.87,3.87,0,0,0,13.23,0,4,4,0,0,0,9.32,4,3.41,3.41,0,0,0,9.44,5,11,11,0,0,1,1.32.72a4.29,4.29,0,0,0-.52,2A4,4,0,0,0,2.56,6.12,3.61,3.61,0,0,1,.76,5.6v0a4,4,0,0,0,3.16,4,4.35,4.35,0,0,1-1,.16,4.9,4.9,0,0,1-.76-.08,4,4,0,0,0,3.68,2.8A7.79,7.79,0,0,1,.92,14.19a6.78,6.78,0,0,1-.92,0A10.83,10.83,0,0,0,6,16c7.24,0,11.19-6.16,11.19-11.47V4a6.83,6.83,0,0,0,2-2" fill="#000">
</path>
</symbol>
</svg>
</defs>
<div id="box1">
<svg>
<use xlink:href="#twitter-symbol"/>
</svg>
</div>
<defs>
是一个svg元素。它总是在 svg 中。我做了一些更改,现在可以使用了。请运行代码看看我做了什么
#box1 {
height: 10rem;
width: 10rem;
}
#twitter{display:none;}
<svg id="twitter">
<defs>
<symbol id="twitter-symbol"><title>twitter</title>
<path id="twitter-path" d="M19.19,1.92a8.76,8.76,0,0,1-2.28.64A3.9,3.9,0,0,0,18.63.32a6.87,6.87,0,0,1-2.52,1A3.87,3.87,0,0,0,13.23,0,4,4,0,0,0,9.32,4,3.41,3.41,0,0,0,9.44,5,11,11,0,0,1,1.32.72a4.29,4.29,0,0,0-.52,2A4,4,0,0,0,2.56,6.12,3.61,3.61,0,0,1,.76,5.6v0a4,4,0,0,0,3.16,4,4.35,4.35,0,0,1-1,.16,4.9,4.9,0,0,1-.76-.08,4,4,0,0,0,3.68,2.8A7.79,7.79,0,0,1,.92,14.19a6.78,6.78,0,0,1-.92,0A10.83,10.83,0,0,0,6,16c7.24,0,11.19-6.16,11.19-11.47V4a6.83,6.83,0,0,0,2-2" fill="#000">
</path>
</symbol>
</defs>
</svg>
<div id="box1">
<svg viewBox="0 0 19.19 15.95" width="24">
<use xlink:href="#twitter-symbol"/>
</svg>
</div>
希望对您有所帮助。
您在 HTML 中使用内联 SVG 代码,因此我相信 SVG 路径需要在其中定义一个视图框。例如,如果您在 HTML SVG 标签中添加 viewBox="0 0 60 55",您会注意到尺寸将开始调整。所以编辑你的 HTML
的这一部分<svg viewBox="0 0 60 55">
<use xlink:href="#twitter-symbol"/>
</svg>
为了扩展您发现尺寸列为 300x150 的注释,这是适用于 HTML 内联 SVG 代码的默认标准尺寸(根据 HTML5 规范)。这有时会因浏览器而异。
请记住,处理 SVG 时可以使用几种不同的方法。查看下面的指南,其中他们对 SVG 给出了很好的 运行 评价以及如何操纵它的大小。您可能会找到您更喜欢使用的替代方法。