Figma导出的SVG在网页里不显示渐变

导出的SVG文件直接用Chrome打开是可以查看完整的图像,但是导入到HTML页面之后,图像里的渐变都没了,不管是做背景、使用img显示、直接嵌入在HTML里。渐变凭空消失了。

直接使用Chrome打开没问题,说明导出的SVG是兼容当前设备的。在HTML里无法显示,那么就可能HTML解析器出现了问题,导致SVG渲染不完整。

使用文本编辑器打开SVG文件查看源码,发现Figma导出的SVG里,元素的id命名使用了“:”做分隔符。比如定义渐变的linearGradient使用的id是paint0_linear_1124:4982,是这个导致了浏览器的HTML解析器无法通过id找到对应的渐变,导致渐变内容的丢失。

把“:”替换成“_”,保存,再打开网页就正常了。

HTML4版本里,ID命名只能使用字母、数字、“_”、“-”、“.”。到HTML5版本,取消了这些限制。在CSS里“:”是伪选择器,“.”是类选择器,给ID命名时应该避免使用这些,保持最好的兼容性,避免出现奇奇怪怪的BUG。

同是CSS保留的选择器。把“:”改成“.”,HTML解析器能识别出引用的元素,正确渲染出SVG内容,可能是HTML解析器保持兼容了HTML4规范。

2021.11.18更新:Figma 104.1版本已经修复ID这个问题了,导出的SVG渐变能正常显示了。

评论

  1. Meanwhile, Delaware permits casinos and poker however no sports activities betting. In addition to offering trusted safety for money funds, the most effective UK on-line casinos provide players entry to devoted customer help groups. The casino websites on our Top Seven listing all provide first rate customer service, some higher than others. If you bet365 favor to have customer help obtainable 24/7, you might go for a selected casino web site, similar to Grosvenor or RedKings.

    回复删除

发表评论