svg 第一次上手:先弄懂 viewBox 再碰别的
九成「图标显示不全」的问题都出在这里。讲清坐标系和缩放的关系,一次看懂。
一个把 svg 讲透的内容整理站。我们不卖课、不卖模板,只把矢量图形这件事拆开揉碎,写成人能看懂、能直接上手的话。
svg图表(域名 svg-tu-biao.cn)是一个围绕 svg 这一主题做内容整理与信息导航的独立站点。我们不是软件厂商,也不是设计工具的代理商,本质上更像一个「较真的编辑小组」——把散落在规范文档、开发者社区、设计实践里的 svg 知识,重新梳理成一条能走通的学习路径。
如果你第一次听说 svg,最省事的解释是:它是一种用文字描述图形的格式。你在文件里写的不是像素点阵,而是「从这里画一条线到那里,再拐个弯」这样的几何描述。浏览器读到这段话,自己把图形算出来。好处很直接——放大不糊、体积往往更小、还能被脚本和样式单独控制。我们做的所有内容,都是围绕这个核心事实展开的。
如果你已经用过 svg 但总觉得「会用不会调」——比如图标在某个尺寸下边缘发虚、导出的文件里塞了一堆用不上的编辑器元数据、动画在某个浏览器上不动——那我们的内容可能更对胃口。我们更愿意花篇幅去讲那些真正卡住人的细节,而不是重复「svg 是矢量图」这种人人都会说的话。
一句话概括:svg 的学习、使用、排错与选型。具体拆开是四件事——第一,把基础概念讲清楚,尤其是 viewBox、坐标系、路径命令这些新手最容易糊过去的地方;第二,整理可用的公开资源与工具,并标注它们的来源和适用场景;第三,把常见的坑写出来,让你少走几次弯路;第四,做不同格式之间的横向对比,帮你在具体项目里做出选择,而不是告诉你「哪个最好」。
不臆造。凡是涉及具体名单、具体日期、具体数量、具体获奖记录这类可以被人反查的信息,我们确认不了就留空,不靠猜补齐。这也是本站的一条编辑底线:宁可少写一句,也不写一句查不到出处的话。你在页面上看到的所有判断,要么来自公开规范与文档,要么来自我们自己动手试过之后的结果。
另外一件事值得提前说清楚:本站是信息导航与内容解析站,不托管、不上传、不代理任何图形文件或流媒体,与任何软件厂商都没有官方隶属关系。我们整理的资源都指向公开可访问的原始出处,尊重原作者的版权;如果你发现某条信息有误或涉及权益,请直接通过 联系我们 里的邮箱反馈,处理方式写在 内容说明 中。
这些是我们认为对大多数人有用的入口。它们不是按点击量排的,而是按「读完能立刻用上」排的——每条都对应一类真实会遇到的处境。
九成「图标显示不全」的问题都出在这里。讲清坐标系和缩放的关系,一次看懂。
设计软件会把图层名、注释、隐藏节点一并写进文件。怎么清理、清理时别删错什么。
不比较「谁更好」,只按场景分。图标、照片、实时绘制,各有各的归处。
行高、基线、描边外扩,任何一个没处理都会让图标看起来「差一点点」。
不用设计软件也能画。给一组由浅入深的练习,跟着写一遍就明白路径语法。
文本格式既是优点也是风险点。一分钟的检查动作,能省掉很多麻烦。
这一节不绕弯子。我们按「先建立直觉、再动手写、最后处理麻烦」的顺序讲,每一步都给出具体做法和判断标准。如果你时间紧,只看每段的加粗判断句也够用。
新手最容易混淆的是 width、height 和 viewBox 三者的关系。可以这样理解:viewBox 是你给图形定义的坐标取景框,width 和 height 只是把这块取景框贴到页面上的物理大小。取景框里写着「我的图形范围是 0 0 24 24」,外面写「贴到页面时占 32 像素宽」,浏览器就会把这块 24 单位的画面等比放大到 32 像素。只要取景框定义对了,放大缩小都不会出问题。
反过来,如果 viewBox 的宽高比和 width/height 的宽高比不一致,而你又没设置 preserveAspectRatio,图形就会被拉伸变形。如果你遇到「图标在某个位置突然变扁」的情况,先去看这两个比例是不是对不上,基本一查一个准。
不要一上来就啃 path 的一长串命令。先用 rect、circle、line 各画一个,感受坐标数字和画面位置的对应关系。比如 rect 的 x 和 y 是左上角坐标,width 和 height 是宽高;circle 的 cx、cy 是圆心,r 是半径。写错了立刻改数字看变化,这个反馈循环是建立直觉最快的办法。
等你能凭感觉写出一个位置正确的矩形,再去看 path。path 的 d 属性本质上就是「移动到某点、画线到某点、画曲线到某点」的连续指令,M 是移动、L 是直线、C 是三次贝塞尔、Q 是二次贝塞尔、Z 是闭合。它们不是魔法,只是把「抬笔、落笔、连线」这件事写成了字母加数字。
坑一,描边被裁掉。如果图形贴边绘制又加了描边,描边会有一半落在取景框外面,看起来像被切了。解决办法是给 viewBox 留出一点余量,或者把描边改成向内对齐。
坑二,fill 和 stroke 的继承。svg 里的样式会往下继承,父级写了 fill 颜色,子路径如果没覆盖就会跟着变。如果你改不动某个颜色,往上找一层,八成是被父级覆盖了。
坑三,用了编辑器私有属性。从设计软件导出的文件常带着私有命名空间和大量注释,浏览器虽然会忽略,但体积白白变大。清理时注意别把 clipPath、mask 这类真正参与渲染的节点删掉。
坑四,把 svg 当成纯图片用。svg 能被样式和脚本单独操作,这正是它的价值所在。如果你只是把它当 img 塞进去,那和用 PNG 的区别就只剩下清晰度了,有点浪费。
这一点很多教程不讲,但实际项目里很重要。如果是照片、复杂渐变插画、包含大量细节纹理的素材,位图格式通常更合适。svg 的优势在于结构清晰、可缩放、可编程,而不是「什么都能画」。硬把一张照片转成 svg,得到的往往是体积巨大、细节丢失、渲染还慢的文件,得不偿失。
判断标准可以简单一点:如果这个图形放大之后你希望线条依旧锐利,而且它的构成是有限的几何形状,就用 svg;如果你需要表现连续色调和丰富细节,就用位图。两者分工,不存在谁淘汰谁。
svg 是文本格式,这既是它的优点也是需要留意的地方。纯图形的 svg 完全安全,它就是一段描述。但如果文件里内嵌了 script 标签、外部引用或者 onload 这类事件属性,在浏览器中打开时是有可能执行脚本的。遇到来源不明的 svg,用文本编辑器打开扫一眼有没有 script 和 on 开头的属性,一分钟就能判断。我们整理资源时也会标注来源,不会提供任何盗版、破解性质的素材。
下面这张表不是要评出优劣,而是把四种常见格式放在同一套维度下对照,方便你按项目实际情况挑。表格里的判断都基于公开规范与常规实践,不涉及任何具体产品的性能承诺。
| 对比维度 | svg | 位图(PNG/JPG) | Canvas | WebP |
|---|---|---|---|---|
| 放大后清晰度 | 保持锐利,无像素化 | 放大后出现锯齿与模糊 | 取决于画布分辨率 | 放大后同样模糊 |
| 能否被脚本单独操作 | 可以,每个节点都能定位 | 不能,整体是一张位图 | 可以,但需重绘整帧 | 不能 |
| 典型体积表现 | 简单图形极小,复杂图形会膨胀 | 取决于尺寸与压缩率 | 不占文件体积,占内存 | 通常小于同质量 JPG |
| 最适合的场景 | 图标、logo、图表、示意图 | 照片、截图、纹理素材 | 实时绘制、游戏、数据处理 | 网页图片压缩与分发 |
| 可访问性与搜索 | 文本可读,可加标题描述 | 需依赖替代文本 | 内容不可被直接读取 | 需依赖替代文本 |
如果你正在两个格式之间犹豫,一个简单的判断是:这个素材将来会不会被要求放大到不同尺寸?会,就优先考虑 svg;不会,且内容偏照片性质,位图更省事。
我们没有融资故事,也没有夸张的增长曲线。下面这些节点记录的是内容本身的变化——从一个人随手记笔记,到形成一套相对完整的整理方法。
这些是当前正在推进的内容专题,状态会随进度更新。它们都是围绕 svg 的具体子话题展开的,不是泛泛的栏目名。
把 d 属性里的每个字母单独拿出来讲,配可改数字的示例,写到能背下来为止。
整理了一份按顺序执行的检查表,从行高到基线到描边,逐项排除对齐偏差。
用几个是非题把选型过程变成一条路径,回答完就知道该用哪种格式。
收集整理实际会遇到的显示异常,每条给出成因分析和修改方向。
下面这几条不是法律套话,是我们实际执行的标准。写出来是希望你在引用本站内容时心里有数,也方便你在发现偏差时找到我们。
投诉与纠错邮箱:hello@svg-tu-biao.cn。写信时请附上页面地址与具体段落,能大幅缩短我们的核实时间。
这些问题来自读者来信和搜索行为,答案尽量给到能直接用的程度,不写「具体情况具体分析」这种没有信息量的话。
svg 是可缩放矢量图形(Scalable Vector Graphics)的缩写,它用文本描述的几何路径来记录图形,而不是像 JPG、PNG 那样一格一格记录像素。所以把 svg 放大十倍,线条依旧锐利,边缘不会糊成一团马赛克。如果你做的是图标、logo、流程图、数据图表这类需要反复缩放的内容,svg 基本是默认选项;但如果是照片这类像素信息极丰富的素材,位图反而更合适。我们在 深度解读 里把两者的取舍讲得更细。
纯图形描述的 svg 本身很安全,它就是一段 XML 文本。真正需要留意的是内嵌了 script 标签、外部引用或事件属性的 svg,这类文件在浏览器里可能执行脚本。如果你遇到来源不明的 svg,用编辑器打开看一眼有没有 script、onload 之类的字段再决定要不要用,基本就能规避绝大部分问题。我们整理的资源都会标注来源,不提供盗版或破解类文件。
不需要。本站是信息导航与内容解析站,浏览教程、资源推荐和常见问题都不需要注册,也不会要求你上传任何文件。我们不托管、不上传、不代理任何图形文件或流媒体,只做公开信息的整理与解读。如果你只是想搞清楚 svg 怎么用,直接读就行,没有门槛。相关边界写在 内容说明 里。
建议按「先看懂、再动手、后优化」三步走:先弄清 viewBox 和坐标系,这是新手最容易卡住的地方;然后手写几个最简单的 rect、circle、path,感受一下路径命令的含义;最后再去研究压缩、可访问性和动画。具体的学习顺序和几个高频踩坑点写在 深度解读 里,照着做能省掉不少试错时间。
简单说,svg 是矢量、保留图形结构、能被搜索和脚本单独操作;Canvas 是位图画布,画完就变成一堆像素,适合大量实时渲染;WebP 是位图压缩格式,胜在体积小,但放大同样会糊。选择逻辑很直白:要缩放清晰、要能被单独修改,选 svg;要处理照片或高频实时绘制,选位图或 Canvas。三者不是替代关系,而是分工关系。完整的对照表在本页「格式横向对照」一节。
我们保持滚动更新,专题和榜单类内容通常按周补充,教程类内容在有新的浏览器行为变化时会及时修订,页面底部会标注最近一次更新日期。如果你发现事实性错误、失效链接或表述歧义,发邮件到 hello@svg-tu-biao.cn 说明具体位置即可,我们一般在两个工作日内回复,确认后会直接改在正文里并标注修订时间。
内容纠错、版权沟通、合作咨询都可以走下面的渠道。写信时把页面地址和具体段落一并说明,能让我们更快定位问题;如果只是提一句「有个地方错了」,来回确认会拖慢处理速度。