HTML5 SVG,一篇文章就够了(超全超详细,附代码演示)

HTML5 SVG,一篇文章就够了(超全超详细,附代码演示)

HTML5 SVG

初识 SVG

定义及优势:

可缩放矢量图形SVG 用于定义用于网络的基于数学描述的图形SVG使用 XML 格式定义图形SVG图像在放大或改变尺寸的情况下其图形质量不会有损失,适合用于响应式设计SVG图像可通过文本编辑器来创建和修改SVG图像可被搜索、索引、脚本化或压缩 SVG与 Canvas 的区别

SVG基于 XML,而 Cnavas 基于 JavaScript。

SVG基于 XML 就意味着这意味着 SVG DOM 中的每个元素都是可用的。您可以为某个元素附加 JavaScript 事件处理器。

在 SVG中,每个被绘制的图形均被视为对象。如果 SVG 对象的属性发生变化,那么浏览器能够自动重现图形。

Canvas 是逐像素进行渲染的。在 Canvas 中,一旦图形被绘制完成,它就不会继续得到浏览器的关注。如果其位置发生变化,那么整个场景也需要重新绘制,包括任何或许已被图形覆盖的对象。

SVG 与 Canvas 比较

CanvasSVG依赖分辨率器不依赖分辨率不支持事件处理支持事件处理器弱的文本渲染能力最适合带有大型渲染区域的应用程序(比如谷歌地图)能够以 .png 或 .jpg 格式保存结果图像复杂度高会减慢渲染速度(任何过度使用 DOM 的应用都不快)最适合图像密集型的游戏,其中的许多对象会被频繁重绘不适合游戏应用 SVG 的应用场景

网页图标数据可视化复杂的动画效果

SVG 的使用

语法规范

使用:HTML5 支持内联 SVG。

元素是 SVG 图形的容器。

svg 元素默认的宽高为 300px * 150pxSVG 绘制图形时,属性如 stroke、stroke-width、fill 等既可以直接作为 HTML 属性使用,也可以通过 style 属性以 CSS 样式的形式应用。

SVG 的绘制

实质上就是大同小异,就是一些坐标和图形自身必要的参数,这里就不过多赘述。详情参考SVG 实例 | 菜鸟教程 (runoob.com)

基本形状

线形

直线段折线 图形

圆形椭圆矩形三角形多边形星星 路径文本

路径文本多行文本 滤镜

详情见:SVG 实例 | 菜鸟教程 (runoob.com)

渐变

线性渐变(此处为水平)

放射性渐变

动画

以下是实现一个矩形颜色淡出的效果

Note: This example only works in Firefox and Google Chrome.

大小和颜色的渐变

Note: This example only works in Firefox and Google Chrome.

沿一个运动路径移动、旋转并缩放的文本 + 逐步放大并改变颜色的矩形&

Note: This example only works in Firefox and Google Chrome.

SVG 特殊的标签

标签含义 (group),它用于将多个SVG元素组合在一起,作为一个单元进行操作。对 操作,那么内部每个元素都被操作用于定义可重用的图形元素引用由定义的元素创建一个或多个图像的各种视觉效果,比如模糊、颜色偏移、亮度和对比度调整、阴影等fe开头的一系列滤镜相关的标签详情见 https://www.runoob.com/svg/svg-examples.html动画化大多数SVG属性,如x、y、width、height、opacity、fill等让元素沿着给定的路径运动允许动画化旋转(rotate)、缩放(scale)、倾斜(skew)、位移(translate)等变换效果

参考手册

SVG 规范中定义了更多的元素和属性。

常见 SVG 属性:

id: 元素的唯一标识符。class: 元素的类名,用于CSS样式。style: 元素的内联样式。transform: 应用到元素上的变换。x, y: 元素的位置。width, height: 元素的尺寸。fill: 填充颜色。stroke: 描边颜色。stroke-width: 描边宽度。opacity: 透明度。visibility: 元素的可见性。

SVG 元素列表如下:

元素说明属性定义 SVG 文档的根元素width height viewBox preserveAspectRatio xmlns …定义超链接xlink:href target …定义替代的字形glyphRef format rotate dx dy …定义用于 的替代的字形集合(无)定义 的可替代的字形glyphRef format …定义动画attributeName from to dur repeatCount fill …定义颜色动画attributeName from to dur repeatCount fill …定义路径动画path dur repeatCount …定义变换动画attributeName type from to dur …定义圆形cx cy r fill stroke stroke-width …定义剪切路径clipPathUnits (无)定义颜色配置文件(无)定义鼠标指针x y width height xlink:href …定义可重复使用的元素(无)为 SVG 元素提供描述(无)规定要丢弃的元素(无)定义椭圆cx cy rx ry fill stroke stroke-width …定义图像混合in in2 mode …定义颜色矩阵in type values …定义颜色/Alpha 组件的转换函数(无)定义图像合成in in2 operator …定义卷积矩阵in order kernelMatrix …定义漫反射光照in surfaceScale diffuseConstant …定义位移图in in2 scale …定义远程光照azimuth elevation …定义投射阴影dx dy stdDeviation …定义用于图形元素的颜色flood-color flood-opacity …定义用于调整 Alpha 通道的曲线type tableValues slope …定义用于调整图像的曲线type tableValues slope …定义用于调整图像的曲线type tableValues slope …定义用于调整图像的曲线type tableValues slope …定义高斯模糊效果stdDeviation …定义要嵌入的图像href result …定义用于合并图像的滤镜图形(无)定义用于合并图像的输入图像(无)定义用于改变输入图像形状的滤镜operator radius …定义输入图像的偏移dx dy …定义点光源x y z …定义镜面高光效果in surfaceScale specularConstant …定义聚光灯x y z pointsAtX pointsAtY pointsAtZ …定义重复输入图像(无)定义湍流图像baseFrequency numOctaves …定义滤镜效果filterUnits primitiveUnits x y width height …定义字体资源horiz-origin-x horiz-origin-y horiz-adv-x vert-origin-x vert-origin-y vert-adv-y …定义字体的属性font-family font-style font-variant font-weight font-stretch …定义字体文件格式(无)定义字体名称(无)定义字体文件的位置(无)定义字体文件的位置(无)定义 SVG 文件中的其它 XML 命名空

相关推荐

世界杯-比利时3-0巴拿马 默滕斯世界波卢卡库双响
365提款会被冻结卡吗

世界杯-比利时3-0巴拿马 默滕斯世界波卢卡库双响

📅 07-07 👁️ 1699
微信步数怎么开?微信步数在哪里打开?看完这篇就知道了!
365提款会被冻结卡吗

微信步数怎么开?微信步数在哪里打开?看完这篇就知道了!

📅 07-16 👁️ 2507
苹果7p待机时间是多久
365提款会被冻结卡吗

苹果7p待机时间是多久

📅 10-05 👁️ 9817