有没有办法在伪元素::before或::after中使用SVG作为内容?
SVG作为伪元素::before或::after的内容使用的原因是想要在伪类中添加SVG图像作为装饰或图标。通过将SVG图像作为内容属性的URL值,可以在伪类中显示SVG图像。然而,一些用户尝试这样做时遇到了问题,无法正确地调整SVG图像的大小或样式。
解决方法是使用正确的CSS属性来调整SVG图像的大小和样式。首先,可以使用content属性将SVG图像作为URL引用,然后使用width和height属性来指定图像的大小。如果希望直接将SVG代码嵌入到CSS中,可以使用data URI将SVG代码转换为URL,并将其作为content属性的值。然后,可以使用其他CSS属性来调整SVG图像的样式,如fill属性来改变填充颜色。
注意,有些用户尝试使用SVG sprites时遇到了问题,无法正确地引用其中的图标。对于这种情况,可以在SVG中定义视图,并使用片段标识符(如#my-icon)来引用特定的图标。
总结起来,可以通过将SVG图像作为content属性的URL值或使用data URI将SVG代码嵌入到CSS中来在伪类中显示SVG图像。然后,可以使用其他CSS属性来调整SVG图像的大小和样式。对于使用SVG sprites的情况,需要定义视图并使用片段标识符来引用特定的图标。
使用CSS函数url()可以在伪元素::before或::after中使用SVG作为内容。
解决方法如下:
1. 确保SVG中不含有#符号,可以使用编码器进行编码,例如使用这个编码器。
2. 由于SVG通常使用双引号,可以使用外部单引号来包裹代码。
3. 在SVG的部分添加xmlns='http://www.w3.org/2000/svg',以适配Chrome 66.x。
4. 注意url中的#符号需要进行url编码,替换为%23,并删除所有换行符。
5. 可以使用yoksel.github.io/url-encoder来安全地将SVG图像编码为URL数据。
6. 如果从Font Awesome等地方复制SVG代码,确保content: URL (' ');中使用单引号,并在逗号和闭合单引号之间添加content:URL ('data:image/svg+xml;charset=UTF-8,');,然后粘贴SVG代码。
通过以上方法可以解决在伪元素中使用SVG作为内容的问题。然而,需要注意的是,这种方法在IE11中不被支持,可以使用url('file.svg')代替。