svg作为css的background,导致fill不支持十六进制?
下面的代码中,我把svg作为css的background,发现fill属性如果写blue之类的单词,会显示正确的颜色,但换成十六进制,如#acd123,就无效.但是如果把相同的svg写在body里面,即作为html标签使用,fill里写十六进制的颜色,能正确显示相应颜色.所以问题来了,把svg作为css背景的情况下,svg下的rect的fill如何才能支持十六进制颜色的写法?
.svg{
box-sizing: border-box;
width: 100px;
height: 100px;
background: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg'><rect width='100%' height='100%' fill='blue' rx='15' stroke='red' /></svg>");
}
<div class="svg">svg的fill颜色</div>
回复
1个回答

test
2024-06-19
试了一下确实不行。猜测可能因为svg作为背景的时候css 没法主动处理内部属性,只能识别颜色名称 16进制无法识别;提供另一个思路:把16进制颜色在线转为rgb形式写入可以出现例如:#acd123 => rgb(172, 209, 35) 是可以实现效果的
回复

适合作为回答的
- 经过验证的有效解决办法
- 自己的经验指引,对解决问题有帮助
- 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
- 询问内容细节或回复楼层
- 与题目无关的内容
- “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容