博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
svg学习笔记
阅读量:6649 次
发布时间:2019-06-25

本文共 4036 字,大约阅读时间需要 13 分钟。

SVG 可缩放矢量图形(Scalable Vector Graphics)

存在形式:

SVG 是使用 XML 来描述二维图形和绘图程序的语言

在html中的引入方式

1、2、  3、4、直接在页面中引用
`

在相应标签

  • 矩形 <rect>

// 属性- x 属性定义矩形的左侧位置(到浏览器窗口左侧的距离)- y 属性定义矩形的顶端位置(同上)- rx 属性定义水平半径 - ry 属性定义垂直半径
  • 圆形 <circle>

// 属性- cx,cy 表示圆心所在位置
  • 椭圆 <ellipse>

//属性- cx,cy 表示圆心所在位置- rx x轴半径- ry y轴半径
  • 线 <line>

- x1y1,x2,y2表示起点和终点(x0,y0,x1,y1也可以)
  • 折线 <polyline>

//属性- points 表示多个点 按顺序连接
  • 多边形 <polygon>

// 自动闭合起点和终点的折线而已
  • 路径 <path>

// 属性M = moveto 移动到新的位置L = lineto 从当前坐标画一条直线到一个新坐标H = horizontal lineto 画一条水平线到新坐标V = vertical lineto 画一条垂直线到新坐标C = curveto S = smooth curvetoQ = quadratic Belzier curveT = smooth quadratic Belzier curvetoA = elliptical Arc 画一条椭圆弧线Z = closepath 关闭当前路径
  • 文本

Text
  • 图案

一些共有属性

  • fill-opacity 属性定义填充颜色透明度(0 - 1)

  • stroke-opacity 属性定义笔触(类似border)颜色的透明度(0 - 1)

  • stroke: 笔触颜色

  • stroke-width:笔触大小

  • stroke-linecap:

    有三个值`butt` `square` `round` 用来控制绘制描边的方式butt用直边结束线段,它是常规做法,线段边界90度垂直于描边的方向、贯穿它的终点。square的效果差不多,但是会稍微超出实际路径的范围,超出的大小由stroke-width控制。round表示边框的终点是圆角,圆角的半径也是由stroke-width控制的。

    表现形式

clipboard.png

  • stroke-dasharray: 是一组用逗号分割的数字组成的数列, 比如"5,10,5"

    clipboard.png

  • stroke-linejoin:用来控制两条描边线段之间,用什么方式连接。

    表现形式clipboard.png

注意 样式属性可以直接写在dom上面也可以写成css,比如stroke,fill等等,也有一些是独立的,比如cy,cx,ry,rx

滤镜

1、滤镜效果列表

// 混合和合并效果feBlend :类似于CSS blend modes,描述了图像通过混合模式进行交互feComposite :混合图片,可以以百分比的方式进行混合feMerge :不同滤镜的組合 ( merge )// 色彩效果feColorMatrix :颜色应用矩阵转换。( Matrix multiplication )feComponentTransfer :允许图片由四个色彩通道重新定义(feFuncA、feFuncB、feFuncG、feFuncR)feFlood :重新绘制矩形並和其他物件结合//光照和光源效果feDiffuseLighting :使用 alpha channel 计算凹凸feDistantLight :定义光源fePointLight、feSpecularLighting、feSpotLight// 其它特殊效果feConvolveMatrix :透过矩阵运算,做出模糊,边缘检测,锐化,浮雕和斜角...等效果。feDisplacementMap :置换每一英吋的图像feGaussianBlur :高斯模糊feImage :使用其他的过滤器(像feBlend或feComposite) feMergeNodefeMorphology: 削弱或扩张源图像feOffset :用来创建阴影feTile :让图像以重复模式進入滤镜feTurbulence :创建震荡与纹理

2、滤镜基本用法

// filter definition here can include // multiple of the above items

通过<defs></defs>中的<filter></filter>定义相滤镜效果,一个<filter>中可以有多个滤镜效果,都是<fexxx>的标签形式存在

1、然后通过filter:url(#xxx)"的形式去引用滤镜 // 容器元素 (除了mask) and 图片元素
2、然后通过fill:url(#xxx)"的形式去引用滤镜 // 形状和text容器元素
可以多次复用

每个滤镜效果都有自己的

svg应用

使用symbol 创建icon

例如<symbol><use>结合使用能创建图标

通过illustrator 生成的一个icon.svg文件

// 在页面中如此引入即可

     

换句话说,就是你定义了一组图形对象(使用<symbol>元素)之后,可以使用<use>元素来对它进行无限次实例化展示。你使用xlink:href属性来指定你想要展示哪一组图标,这里,我们要展示的是id为#heart的<symbol>元素

注意xlink:href属性和id标识符是唯一对应的(它不能引用外部资源中的id)

这种方法非常好用,但缺点是SVG sprite不能缓存。

其中属性viewBox 表示svg的可视区域,

动画

svg动画可以依赖css中的animation或者svg中动画标签来完成

不过 svg的坐标系和HTML的坐标系不大一样,HTML元素的坐标原点系在dom中心,而svg实在画布左上角(0.0)处,roate比较明显能看的出来

这里css动画部展开讲,看看svg自带的动画标签和属性

  • <set>

    set是没有持续的动画效果的,有点类似css中的transform 但是他还可以设置延迟执行时间
  • <animate>

    他能实现下面三个标签的功能 所以 下面三个比较少用
  • <animateColor>

  • <animateTransform>

  • <animateMotion>

动画标签部分属性说明:

1. attributeName = <attributeName> 要变化的元素属性名称
(1) 可以是元素直接暴露的属性,例如,元素上的x, y或者font-size;     (2) 可以是CSS属性。例如,透明度opacity.
2. attributeType = “CSS | XML | auto”
attributeType支持三个固定参数,CSS/XML/auto. 用来表明attributeName属性值的列表。     x, y以及transform就属于XML, opacity就属于CSS. auto为默认值,一般不用设置,浏览器会自动判断
3.from, to, by, values
from 如果和默认值一样可以忽略,to和by必须有一个出现才能形成动画,to是到制定目标,是绝对的,by是相对的,是from+by就是终点。to和by同时出现,by将被忽略

更详细请前往

svg 文案

三种方法来制作图案文本

  • fill

  • mask

  • clip-path

兼容性

1、目前主流浏览器,ie9+都支持svg基本属性,但是滤镜、字体等等效果也是

2、对滤镜支持各不同,并且存在一定的性能问题

3、优雅降级

相对于其他格式的图片

SVG 可被非常多的工具读取和修改(比如记事本)

SVG 与 JPEG 和 GIF 图像比起来,尺寸更小,且可压缩性更强。
SVG 是可伸缩的
SVG 图像可在任何的分辨率下被高质量地打印
SVG 可在图像质量不下降的情况下被放大
SVG 图像中的文本是可选的,同时也是可搜索的(很适合制作地图)
SVG 可以与 Java 技术一起运行
SVG 是开放的标准
SVG 文件是纯粹的 XML

和其他相似技术相比,比如canvas、flash

<canvas>和<svg>都是HTML5推荐使用的图形技术,Canvas基于像素,提供2D绘制函数,是一种HTML元素类型,依赖于HTML,只能通过脚本绘制图形;SVG为矢量,提供一系列图形元素(Rect, Path, Circle, Line …),还有完整的动画,事件机制,本身就能独立使用,也可以嵌入到HTML中,SVG很早就成为了国际标准

Canvas提供的功能更原始,适合像素处理,动态渲染和大数据量绘制
SVG功能更完善,适合静态图片展示,高保真文档查看和打印的应用场景

svg库

1、

2、

转载地址:http://qsyto.baihongyu.com/

你可能感兴趣的文章
Zebra 在SAP中的使用示例(中英文版本)
查看>>
Android学习笔记1 android adb启动失败问题 adb server is out of date. killing...
查看>>
PostgreSQL的注释嵌套的例子
查看>>
jQuery插件开发初探
查看>>
AnimationState
查看>>
Clojure绘制UML
查看>>
【转】Ultimate Traffic Shaper
查看>>
禁止wordpress版本自动升级的解决方案
查看>>
字符串相似度算法(编辑距离算法 Levenshtein Distance)(转)
查看>>
Kurskal算法生成最小生成树MST
查看>>
Nyoj 43 24 Point game 【DFS】
查看>>
Java2下Applet数字签名具体实现方法
查看>>
豪斯医生第一季/全集House M.D 1迅雷下载
查看>>
oracle服务器本地能够登录但是局域网内其他机器不能访问的解决方法
查看>>
应用框架的特点
查看>>
36.3. title
查看>>
float4与half4数据类型
查看>>
CodeDom六--实体类生成示例
查看>>
把数组中的奇数放到偶数之前
查看>>
操作系统复习笔记(五)
查看>>