svg的使用

SVG 可缩放矢量图形使用指南

#resource / html #resource / css #type / howto #status / growing

SVG 可缩放矢量图形

概念

名称: 可缩放矢量图形(Scalable Vector Graphics,SVG)

特点:

  • 基于 XML 的矢量图形格式
  • 无限缩放不失真
  • 可被 CSS 样式化和 JavaScript 操作
  • SEO 友好,文本可被搜索引擎索引
  • 文件体积小(相比位图)

使用方式

1. 内联 SVG

直接在 HTML 中嵌入 SVG 代码:

<svg width="100" height="100" viewBox="0 0 100 100">
  <circle cx="50" cy="50" r="40" fill="#3498db" />
</svg>

2. img 标签引用

<img src="icon.svg" alt="图标" width="24" height="24" />

3. CSS 背景图

.icon {
  background-image: url('icon.svg');
  background-size: contain;
  width: 24px;
  height: 24px;
}

4. Vue/React 组件化

<!-- Vue 中使用 vite-svg-loader -->
<template>
  <IconHome class="icon" />
</template>

<script setup>
import IconHome from '@/assets/icons/home.svg?component'
</script>

SVG 图标库推荐

图标库特点地址
Lucide简洁美观,Vue/React 支持lucide.dev
HeroiconsTailwind CSS 官方图标heroicons.com
Iconify超大图标集合iconify.design
Font Awesome经典图标库fontawesome.com

CSS 操作 SVG

修改颜色

svg {
  fill: currentColor; /* 使用当前文字颜色 */
}

svg path {
  fill: #3498db;
  stroke: #2980b9;
  stroke-width: 2;
}

悬停效果

.icon:hover svg {
  fill: #e74c3c;
  transform: scale(1.1);
  transition: all 0.2s ease;
}

Path Data 基础

SVG 的 <path> 元素使用 d 属性定义路径:

命令说明示例
MMove to(移动到)M10 10
LLine to(画线到)L50 50
HHorizontal line(水平线)H100
VVertical line(垂直线)V100
CCubic Bezier(三次贝塞尔曲线)C...
ZClose path(闭合路径)Z

参考工具

SVG 编辑器:

  • Lunacy(免费设计工具)
  • Affinity Designer
  • Inkscape(开源免费)
  • Figma/Sketch

在线工具:

  • SVGOMG(SVG 优化压缩)
  • SVG Path Editor(路径编辑)

Path Data 获取: Visual Studio Blend WPF 项目,可以获得完美的 path data,适用于 CSS 的 clip-path


相关笔记

创建于 2025/1/1 更新于 2026/5/27