一位客户发誓并要求我按照2023年的标准使用svg文件中的所有图标。和用于背景图像和可改变的正常图标的图标。
- 我正在使用以下格式的svg精灵:*
<?xml version="1.0" encoding="utf-8"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<symbol fill="none" viewBox="0 0 24 24" id="arrow-up-and-down" xmlns="http://www.w3.org/2000/svg">
<path d="M10.45 6.72 6.73 3 3.01 6.72M6.73 21V3M13.55 17.281l3.72 3.72 3.72-3.72M17.27 3v18"
stroke="#29354D" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" />
</symbol>
</svg>
- 要在布局中使用,我使用以下模板:*
`<svg class="arrow-link__icon">
<use xlink:href="./src/images/svg/symbol/sprite.svg#arrow-up-and-down" />
</svg>`
一切都插入完美!文件是单独存储的,所以我得到的图像很容易,很简单。但是风格呢?我怎样才能采取一些类似的图标,并插入到样式?
`
&-item__text {
background: url('../images/svg/symbol/sprite.svg#arrow-up-and-down') top left/cover
no-repeat,
$darkBlue;
height: 100%;
}
`
现在我给你开了以下的处方,但是不管用!我在网上找不到正确的答案,我的老板越来越生气。救命啊!救命啊!
3条答案
按热度按时间zbsbpyhn1#
正如Robert Longson所说:你不能在
<img>
源代码中引用<symbol>
-这同样适用于CSS背景图像。对于图片,你可以使用fragment identifiers-这需要调整你的sprite svg。
与片段标识符一起使用的精灵需要呈现的元素。
下面是一个混合sprite svg的例子,它同时使用
<use>
和<img>
元素。基本上,您需要为每个符号添加一个
<use>
示例。然后添加一个样式表来隐藏除目标元素之外的所有use元素。
现在我们可以使用这两个sprite概念:
plnkr example。
laawzig22#
在所有现代浏览器中,您都可以跳过Symbol/Use(及其问题)并定义
<svg-icon>
Web组件,该组件生成<svg>
hi3rlvi23#
看起来您希望使用sprite文件中的SVG图标,不仅用于显示图像,还用作CSS样式的背景图像。根据您提供的代码片段,看起来您已经走上了正确的道路,但是您需要确保以下几点才能使其正确工作:
SVG用法:在HTML中,您已经使用元素来正确引用图标。确保您使用的id与SVG精灵中定义的id匹配。举例来说:
要在CSS中使用SVG作为背景图像,您应该能够像这样做: