如何在<svg>标签内插入PNG图片作为背景?
解决方案
你可以直接在SVG内部的多边形标签前插入<image>标签实现需求,完整修改后的代码如下:
<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>Hello, world!</title> </head> <body> <svg viewBox="0 0 1000 1000" width="100"> <!-- 背景图标签放在多边形前面,渲染时会处于下层 --> <image x="0" y="0" width="1000" height="1000" href="https://www.w3schools.com/html/pic_trulli.jpg" /> <polygon points="100 100, 900 100, 900 900" /> </svg> </body> </html>
配置说明
- SVG元素按照代码书写顺序渲染,先写的
<image>会自动处于后写的多边形下层,无需额外设置层级 <image>的宽高设置为和viewBox一致的1000px,会完全贴合SVG画布,SVG整体缩放时图片会同步缩放,不会出现错位- 若需要调整图片适配规则,可添加
preserveAspectRatio属性:- 默认值
xMidYMid meet会等比缩放完整显示图片 - 设为
preserveAspectRatio="none"会强制拉伸图片铺满画布 - 设为
preserveAspectRatio="xMidYMid slice"会等比缩放后裁切超出部分,保证铺满画布
- 默认值
内容的提问来源于stack exchange,提问作者finefoot
相关产品推荐
相关产品推荐

