Skip to content
本页目录

SVG的分析

01.svg怎么来的

02.svg能做的效果

  1. svg描边动画(Stroke)

    chapter5-1

  2. svg路径动画(Path)

    chapter6-1

  3. svg变形动画(Morping)

    chapter7-1

  4. svg闪烁动画(Blink)

    chapter8-1

  5. svg图案动画(Pattern)

    通常是用来做一些网页的背景

image-20230621161232050

不过以上的特效通常是用GSAP 等类似的动画库去完成的

当然也有去手动实现的 不太方便

03.svg在vue项目的引入

在vue3的项目中如何去使用svg

方法1:使用插件


// 1.下载
npm install vite-svg-loader --save-dev

// 2.配置vite.config.js
import svgLoader from 'vite-svg-loader'

export default defineConfig({
  plugins: [vue(), svgLoader()]
})

// 3.项目是ts的,要非常注意,需要单独声明模块!!!
// tsconfig.json
    "compilerOptions": {
        "types": [
        // 一定要声明
            "vite-svg-loader"
        ],
}

在setup中引入

在template中引用

image-20230621185617112

方法2:建立一个SVG组件

使用SVG构建你自己的图标库_svg图标库_jayliang.的博客-CSDN博客

思考一个问题 :

为什么需要把svg做成组件的形式

你感受一下,直接用

vue
 1<template>
 2  <div id="goodsDetail">
 3    <van-nav-bar title="商品详情"
 4                 :fixed=true
 5                 left-arrow
 6                 @click-left="onClickLeft">
 7      <svg t="1575254700818"
 8           class="icon"
 9           viewBox="0 0 1024 1024"
10           version="1.1"
11           xmlns="http://www.w3.org/2000/svg"
12           p-id="1907"
13           width="32"
14           height="32"
15           slot="right">
16        <path d="M621.93259435 611.38542038L423.92102316 703.33559492c-9.52523406 4.42304387-20.93769289 0.2488718-25.36137327-9.27636225-4.42304387-9.52523406-0.2488718-20.93769289 9.27636226-25.36137326l198.01157118-91.95017455c9.52523406-4.42304387 20.93769289-0.2488718 25.36137327 9.27636226 4.42368037 9.52587056 0.2488718 20.93832939-9.27636225 25.36137326zM600.48824684 870.32029948l-189.07064485-109.15988242c-9.09495954-5.25113136-12.24054635-16.98884212-6.98941498-26.08443814 5.25113136-9.09495954 16.98884212-12.24054635 26.08443815-6.98941498l189.07064483 109.15988241c9.09495954 5.25113136 12.24054635 16.98884212 6.98941499 26.08443814-5.25113136 9.09559604-16.98884212 12.24054635-26.08443814 6.98941499z"
17              fill="#F9C73D"
18              p-id="1908"></path>
19        <path d="M358.28506354 712.46556199m-92.29261194 0a92.29261195 92.29261195 0 1 0 184.58522388 0 92.29261195 92.29261195 0 1 0-184.58522388 0Z"
20              fill="#FFEABB"
21              p-id="1909"></path>
22        <path d="M358.28506354 823.85319711c-61.419142 0-111.38763511-49.96849311-111.38763512-111.38763512s49.96849311-111.38763511 111.38763512-111.38763511 111.38763511 49.96849311 111.38763512 111.38763511-49.96849311 111.38763511-111.38763512 111.38763512z m1e-8-184.5852239c-40.36115047 0-73.19758879 32.83643833-73.19758879 73.19758877s32.83643833 73.19758879 73.19758879 73.1975888 73.19758879-32.83643833 73.1975888-73.19758879-32.83643833-73.19758879-73.1975888-73.19758878zM683.85520847 640.54097475c-50.89014624 0-92.29261195-41.40246571-92.29261196-92.29261196s41.40246571-92.29261195 92.29261196-92.29261194 92.29261195 41.40246571 92.29261195 92.29261194-41.40246571 92.29261195-92.29261195 92.29261195z m0-146.39517759c-29.83215469 0-54.10256563 24.27041094-54.10256564 54.10256563s24.27041094 54.10256563 54.10256564 54.10256564 54.10256563-24.27041094 54.10256562-54.10256564-24.27041094-54.10256563-54.10256562-54.10256563zM683.85520847 979.15938549c-50.89014624 0-92.29261195-41.40246571-92.29261196-92.29261195s41.40246571-92.29261195 92.29261196-92.29261195 92.29261195 41.40246571 92.29261195 92.29261195-41.40246571 92.29261195-92.29261195 92.29261196z m0-146.39517756c-29.83215469 0-54.10256563 24.27041094-54.10256564 54.10256561s24.27041094 54.10256563 54.10256564 54.10256564 54.10256563-24.27041094 54.10256562-54.10256564-24.27041094-54.10256563-54.10256562-54.10256561z"
23              fill="#F9C73D"
24              p-id="1910"></path>
25      </svg>
26    </van-nav-bar>
27    </div>
28    <template>

那我import 导入svg行不,当然不行 直接给你返回一个路径

那怎么处理

Vue电商项目-提升逼格玩转svg - 掘金 (juejin.cn)

公司引入icon的写法实际上就是按需引入 svg 不是全部的引入这样打包的时候可以因为webpack版本没有树摇优化,只能采取这样减少打包体积=

参考:

小蘿蔔丁 的个人主页 - 文章 - 掘金 (juejin.cn)

02-svg绘制基础图像1_哔哩哔哩_bilibili

5分钟学会SVG文字描边动画_哔哩哔哩_bilibili

【svg】用svg设计bilibili小电视 | svg进阶篇一_哔哩哔哩_bilibili

参考svg

用import 图片的方式使用svg, 导入svg图,封装SvgIcon组件_import svg_ddx2019的博客-CSDN博客

Vue中svg图片引入的两种方式 - 掘金 (juejin.cn)

使用 Vue & SVG 快速绘制曲线图(带动画) - 掘金 (juejin.cn)

vite vue引入svg图标及封装 - 掘金 (juejin.cn)

[译]在 Vue 中编写 SVG 图标组件 - 掘金 (juejin.cn)

如何在Vue中使用SVG作为图标 - 掘金 (juejin.cn)

vue项目中使用svg - 掘金 (juejin.cn)

Vue 项目踩坑记录之 SVG - 掘金 (juejin.cn)

30秒教你学会在vue3(vite)中使用全局svg图标 - 掘金 (juejin.cn)

vue项目中如何引入svg 图标 - 掘金 (juejin.cn)

vue3 使用svg图标 - 掘金 (juejin.cn)

封装svg图标组件 - 掘金 (juejin.cn)

vue项目中使用svgIcon图标 - 掘金 (juejin.cn)

面试官:你真的会用 SVG 吗? (SVG 应用实战) - 掘金 (juejin.cn)

自己写一个svg图标组件吧 - 掘金 (juejin.cn)

svg的一些代码库

janily on CodePen