我通过试验 JW. 的想法发现,你可以对整个字符串进行 Base64 编码,除了最后的字符串#grayscale
部分并添加相应的编码部分,或者更好。仅对 xml 属性和/或标记名称之间的空格进行 url 编码,并用逗号分隔矩阵值。
所以最后你有:
filter: url("data:image/svg+xml;utf8,<svg%20xmlns='http://www.w3.org/2000/svg'><filter%20id='grayscale'><feColorMatrix%20type='matrix'%20values='0.3333,0.3333,0.3333,0,0,0.3333,0.3333,0.3333,0,0,0.3333,0.3333,0.3333,0,0,0,0,0,1,0'/></filter></svg>#grayscale");
它很紧凑并且不会被 css 压缩器改变