SVG 是可缩放矢量图形(Scalable Vector Graphics)的缩写,它是一种用于描述二维矢量图形的 XML 标记语言。与传统的栅格图像不同,SVG 图像可以无限缩放而不会失真,同时也支持交互和动画等特性。
SVG 最早于 1999 年由 W3C 发布,用于在 Web 上展示矢量图形,并于 2001 年正式成为标准。在过去的二十多年中,SVG 经历了多次更新和改进,增加了更多的功能和特性,如动画、交互等,并逐渐得到广泛的应用。
SVG 2.0 于 2016 年 9 月 15 日成为 W3C 候选推荐标准,最新草案于 2020 年 5 月 26 日发布。
(资料图)
SVG 的优点包括:
SVG 的缺点包括:
SVG 的文件结构和语法规则包括以下几点:
"http://www.w3.org/2000/svg"
,可以通过 xmlns 属性来指定和扩展其他命名空间。例如:
,表示图形容器的大小和属性。其中,width 和 height 属性指定画布的宽度和高度,viewBox 属性指定可视范围的位置和大小。、、、
等,常见的属性包括 fill、stroke、stroke-width、transform 等。SVG 使用的坐标系统(网格系统)和 Canvas 的差不多(笛卡尔坐标系)。坐标系是以左上角为 (0,0) 坐标原点,坐标以像素为单位,x 轴正方向是向右,y 轴正方向是向下。
SVG 坐标系统,在没有明确指定单位时,默认以像素为单位,我们也可以手动指明坐标系的单位。
SVG 坐标系分为视口坐标系和用户坐标系:
视口坐标系(视口-viewport):视口坐标系是在视口上建立的坐标系,原点在视口左上角的点(0, 0),x轴正向向右,y轴正向下。
用户坐标系(视图框-viewBox):用户坐标系是建立在 SVG 视口上的坐标系。该坐标系最初与视口坐标系相同——它的原点位于视口的左上角。使用 viewBox 属性,可以修改初始用户坐标系,使其不再与视口坐标系相同。
常见的 SVG 形状包括:矩形(rect)、圆形(circle)、椭圆形(ellipse)、线段(line)、折线(polyline)、多边形(polygon)
常见的 SVG 元素还包括:
在 SVG 中,可以使用路径
来描述复杂的图形。路径由一系列的路径命令组成,常用的路径命令包括:M(移动到)、L(画直线)、Z(关闭路径)、H(水平线)、V(垂直线)、C(贝塞尔曲线)等。
使用属性 fill(填充) 和 stroke(描边),其中描边属性中 stroke-dasharray(将虚线类型应用在边框上)和 stroke-dashoffset(指定在dasharray模式下路径的偏移量)是 SVG 路径动画的应用原理。
填充和描边也能使用 css 来进行控制,其 css 样式优先级为:
内联的 style > defs 中的 style > 外部 / head 内部 > 属性 fill
SVG 渐变有两种类型:线性渐变和径向渐变
线性渐变使用 linearGradient 和 stop 元素,例如:
滤镜效果通过在 defs 中定义,比如定义一个高斯模糊效果:
SVG 的形变支持平移(translate)、旋转(rotate)等,注意:形变会修改坐标系,SVG 渲染是先形变修改了坐标系后,根据新坐标系再设置元素 xy 坐标。
原理为 stroke-dasharray(描边虚线) 和 stroke-dashoffset(虚线偏移量) 属性的设置。将描边设置为虚线,接着将描边偏移到不可见处,通过动画让描边慢慢变为可见,这样就产生了动画效果了。例如:
#line {/* 指定为虚线,300px大于或等于路径长度,虚线和偏移量大小会影响动画速度*/stroke-dasharray: 300px;/* 可见 */stroke-dashoffset: 300px;animation: line1Move 2s linear forwards;}@keyframes line1Move {100% {/* 可见 */stroke-dashoffset: 0px;}}
支持 stroke 属性的元素都能实现该动画,比如:path、ellipse、polyline 等。
用 JS 脚本实现:通过各种处理 SVG 的 JavaScript 库实现动画和交互效果。
用 CSS 样式实现:主要是使用 CSS3 的动画属性。
用 SMIL 实现:一种基于 SMIL 语言实现的 SVG 动画。
SMIL(Synchronized Multimedia Integration Language 同步多媒体集成语言,是W3C推荐的可扩展标记语言,用于描述多媒体演示)
SVG 中支持 SMIL 动画的元素:
Snap.svg 是一个专门用于处理 SVG 的 JavaScript 库 ( 类似jQuery )。
GSAP 全称是( GreenSock Animation Platform)GreenSock 动画平台。GSAP 是一个强大的 JavaScript 动画库,可让开发人员轻松的制作各种复杂的动画。与 Snap.svg 不一样,GSAP 无论是 HTML 元素、还是 SVG、或是 Vue、React 组件的动画,都可以满足你的需求。
关键词:
【前端可视化】SVG 学习知识点
当前热讯:民生证券:给予永鼎股份买入评级
【天天报资讯】总有人要负责!曝拜仁CEO卡恩被免除职务只是时间问题
【天天报资讯】第133届广交会第一期入场超126万人次
q宠大乐斗韦小宝怎么刷(q宠大乐斗韦小宝) 今日聚焦
一季度银川市工业投资同比增长28.5%
离婚后孩子抚养权如何分配?孩子抚养权怎么争取?孩子的抚养费怎么确定?
14.98-18.48万元 首款第五代智能电混双擎SUV锋兰达上市_环球快看
全球热点评!增额终身寿险猫腻整理!防坑攻略都介绍好了
360压缩文件损坏怎么办(360压缩文件损坏怎么修复) 滚动
打发时间英语_打发时间
国家统计局:一季度住宿和餐饮业GDP同比增长13.6%
中国人民银行:今年一季度金融体系对实体经济的信贷力度支持较强
昆山阳澄湖科技园:“敢”为先 “创”为本 全力推动产业创新高质量发展_天天快资讯
天天热文:中国工业互联网的快速发展获业界点赞和认可
联特科技:公司募投项目建成后将年新增179万支光模块的产能
龙虎榜|顶级游资接力剑桥科技打造算力总龙头,炒股养家重仓抄底工业富联,桑田路尾盘点火西安旅游
环球下周看点:美股财报季进入高峰 特斯拉降价策略迎来检验-当前关注
恒大地产:对深交所批评通报处分结果没有异议_全球信息
【嘉实观察】A股二季度有望震荡略上涨,如何看待AI投资机会?
全球观察:今日部分锂电材料报价下跌 电池级碳酸锂跌2500元/吨
纳微科技(688690)4月20日主力资金净卖出939.17万元 世界时讯
今日最新!曹操高陵考古成果丰硕 陵园、陪葬墓等新考古材料将公布
天天热消息:达州多名男子无视“禁渔令”,一时贪嘴终获刑!
天天即时:这个火车站客流暴增,原因竟是……
子慧
钾肥到港零等待 快速通关保春耕
最新消息:vulstack2 靶场做题笔记
环球观速讯丨ST弘高:公司股票可能被实施退市风险警示
【天天播资讯】同样选菜板,更推荐康巴赫抗菌不锈钢双面菜板
报到证有效期内未报到_报到证有效期|环球新消息
自考专升本的好处_专升本的好处
世界要闻:欧冠35球所用场次排行哈兰德27场 费迪南德哈兰德是曼城更进一步的答案我认为今年他们将夺冠
国家能源集团连续18个月自产煤月均5000万吨|简讯
30岁男子夜晚砍杀母亲妹妹和女儿具体详细内容是什么|环球看热讯
2023山东淄博市市属卫生健康系统事业单位招聘专业技术人员笔试成绩及笔试最低合格分数线公告
相关新闻