svg系列–基础

这里会总结svg的基础知识和一些经典的案例。

svg简介

SVG(Scalable Vector Graphics)is an XML-based Language for creating graphics.
这是MDN英文文档对svg的介绍。 svg支持css,这一点有效的将图形和样式区分开。 svg的应用:
1、绘图
2、动画

如何在网页中引用svg元素

    svg元素可以通过<embed>、<object>或者<iframe>嵌入网页之中,但是我们这里推荐使用<embed>,
兼容性比较好。
    <embed src="circle.svg" type="image/svg+xml" />

    <svg width="" height="">绘制的内容</svg>
一些公共属性
 
  • fill: 填充色 | url(id)这里主要是引用渐变色作为背景
  • stroke: 线条的颜色
  • stroke-width: 线条的宽度
  • stroke-linecap: 线条末尾的样式 (默认)butt (圆角)round (方形)square ,round和square会影响线条的长度
  • opacity: 不透明度 0~1
  • fill-rule: nonzero (非零环绕原则)evenodd
  • stroke-dasharray: 创建虚线数组 x,y,z,..... (长度,间隔,长度,间隔,。。。。)
  • stroke-dashoffset: 偏移
  • filter: url(id) 添加滤镜

绘制矩形

    ---------
矩形
---------
<rect x="" y="" rx="" ry="" width="" height=""></rect>
(x, y): 左上角坐标
rx: x轴圆角半径
ry: y轴圆角半径
width: 长度
height: 高度

绘制圆

    ---------
圆
---------
<circle cx="" cy="" r=""></circle>
(cx, cy): 圆心
r: 半径

绘制椭圆

    --------------
椭圆
--------------
<ellipse cx="" cy="" rx="" ry=""></ellipse>
(cx, cy): 中心点
rx: x轴半径
ry: y轴半径

绘制线条

    --------
线条
--------
<line x1="" y1="" x2="" y2=""></line>
(x1, y1): 线条的起始点
(x2, y2): 线条的结束点

绘制多边形

    ---------------
多边形polygon
---------------
<polygon points=""></polygon>
points: x,y x1,y1 ........

绘制曲线

    ----------------
曲线polyline
----------------
<polyline points=""></polyline>
points: x,y x1,y1 .........

绘制路径

    ---------------
路径
---------------
<path d=""></path>
d: 路径的描述
主要的语法:
M: moveTo
L: lineTo
H: horizontal lineTo
V: vertical lineTo
C: curveto
S: smooth curveto
Q: quadratic Bézier curve
T: smooth quadratic Bézier curveto
A: elliptical Arc
Z: closepath 命令区分大小写,除了Z。大写表示绝对位置,小写表示相对位置
。

绘制文本

    ---------------
绘制文本
---------------
<text x="" y="" text-anchor="" dx="" dy="">text</text>
(x, y): 文字左下角的起始坐标
text-anchor: start middle end 文本锚点(可能会和我们预期的坐标有出入)
dx: 横轴的偏移
dy: 纵轴的偏移 路径文本的绘制
<textPath xlink:href="#path">text</textPath> <text>中还可以嵌套<tspan x="" y="">text</tspan> 同时文本也可以作为超链接
<a xlink:href="" target="">
<text></text>
</a>

滤镜的使用

    -----------------
滤镜
-----------------
<filter id=""></filter>

MDN的案例

渐变

  --------------
渐变
--------------
线性渐变
<linearGradient x1="" y1="" x2="" y2="" gradientUnits>
<stop offset="" style="stop-color:;stop-opacity:;"></stop>
</linearGradient>
gradientUnits: 定义坐标 userSpaceOnUse(不会对pattern的单位进行缩放) | objectBoundingBox(会)
x1: 渐变开始横坐标
y1: 渐变开始纵坐标
x2: 渐变结束横坐标
y2: 渐变结束纵坐标
offset: 渐变开始的位置 0% - 100% 放射性渐变
<radialGradient cx="" cy="" r="" fx="" fy="" gradientUnits>
<stop offset="" style="stop-color:;stop-opacity:;"></stop>
</radialGradient>
gradientUnits: 定义坐标 userSpaceOnUse(不会对pattern的单位进行缩放) | objectBoundingBox(会)
cx: 外层圆心横坐标
cy: 外层圆心纵坐标
fx: 内层圆心横坐标
fy: 内层圆心纵坐标
r: 发散的半径
offset: 渐变开始的位置 0% - 100%

常用的几个标签

  ----------
裁剪
----------
<clipPath id="">裁剪路径</clipPath> ----------
引用元素
----------
<defs>声明引用元素</defs> ----------
拷贝
----------
<use x="" y="" width="" height="" xlink:href="id"></use>
(x, y): 克隆对象的左上角坐标
width: 克隆对象的宽度
height: 克隆对象的高度
xlink:href 引用克隆对象 ----------
模式
----------
<pattern id="" width="" height="" patternUnits="" patternTransform="">模式内的形状</pattern>
width: 模式的宽度
height: 模式的高度
patternUnits: 定义pattern的坐标系统 userSpaceOnUse(不会对pattern的单位进行缩放) | objectBoundingBox(会)
patternTransform: 变换 ----------
遮罩
----------
<mask maskUnits="" x='' y="" width="" height="">内容</mask>
(x, y): 裁剪的左上角坐标。
width: 裁剪的宽度
height: 裁剪的高度

CSS3中的svg的影子

    ---------------------
clip-path 裁剪
---------------------
clip-path:
第一种: url(id) 配合svg的<clipPath>
第二种: polygon(x y,x1 y1,x2 y2,.......)
第三种:inset(top right bottom left round rt rr rb rl) 圆角矩形 这里比较重要的一点就是polygon的过渡动画必须要求各个状态的点的个数一样

svg基础--基本语法与标签的更多相关文章

  1. HTML5 可缩放矢量图形(1)—SVG基础

    参考文档1 SVG基础 SVG介绍 概念:SVG 是使用 XML 来描述二维图形和绘图程序的语言.(理解就是一个在网页上使用笔画图的过程) 什么是SVG SVG 指可伸缩矢量图形 (Scalable ...

  2. SVG基础

    可缩放矢量图形(Scalable Vector Graphics)是基于可扩展标记语言(标准通用标记语言的子集),用于描述二维矢量图形的一种图形格式.它由万维网联盟制定,是一个开放标准.SVG 是使用 ...

  3. SVG基础以及使用Javascript DOM操作SVG

    SVG 不依赖分辨率 支持事件处理器 最适合带有大型渲染区域的应用程序(比如谷歌地图) 复杂度高会减慢渲染速度(任何过度使用 DOM 的应用都不快) 不适合游戏应用 Canvas 依赖分辨率 不支持事 ...

  4. 基础 PHP 语法

    PHP 脚本在服务器上执行,然后向浏览器发送回纯 HTML 结果. 基础 PHP 语法 PHP 脚本可放置于文档中的任何位置. PHP 脚本以 <?php 开头,以 ?> 结尾: < ...

  5. jQuery---jq基础了解(语法,特性),JQ和JS的区别对比,JQ和JS相互转换,Jquery的选择器(基础选择器,层级选择器,属性选择器),Jquery的筛选器(基本筛选器,表单筛选器),Jquery筛选方法

    jQuery---jq基础了解(语法,特性),JQ和JS的区别对比,JQ和JS相互转换,Jquery的选择器(基础选择器,层级选择器,属性选择器),Jquery的筛选器(基本筛选器,表单筛选器),Jq ...

  6. HTML&CSS基础-xHtml语法规范

    HTML&CSS基础-xHtml语法规范 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.html源码 <!DOCTYPE html> <html> ...

  7. SVG基础绘图实例

    SVG可缩放矢量图(Scalable Vector Graphics),是使用 XML 来描述二维图形和绘图程序的语言,图像在放大或改变尺寸的情况下其图形质量不会有所损失,是万维网联盟的标准. 下面整 ...

  8. node.js学习(二)--Node.js控制台(REPL)&&Node.js的基础和语法

    1.1.2 Node.js控制台(REPL) Node.js也有自己的虚拟的运行环境:REPL. 我们可以使用它来执行任何的Node.js或者javascript代码.还可以引入模块和使用文件系统. ...

  9. OC基础 点语法的使用

    OC基础 点语法的使用 1.创建一个Student类继承于NSObject,Student.h文件 #import <Foundation/Foundation.h> @interface ...

随机推荐

  1. 深海 => 暴力扫描挖掘机

    平时总是联动这个联动那个,写一些小脚本,感觉零碎又没啥意思,想把市面上一些比较知名的工具集合一下,弄个方便点的躺着挖洞的工具,看看效果会不会更好,暂时名字取深海吧,估计又是一个迟迟不填的坑,灌灌灌灌水

  2. WEB安全漏洞挖掘向入坑指北

    这个指北不会给出太多的网站和方向建议,因为博主相信读者能够从一个点从而了解全局,初期的时候就丢一大堆安全网址导航只会浇灭人的热情,而且我也不适合传道授业解惑hhh 安全论坛: 先知社区 freebuf ...

  3. Leetcode学习笔记(6)

    题目1 ID112 给定一个二叉树和一个目标和,判断该树中是否存在根节点到叶子节点的路径,这条路径上所有节点值相加等于目标和. 说明: 叶子节点是指没有子节点的节点. 示例: 给定如下二叉树,以及目标 ...

  4. Hive 安装 & Mysql 安装

    安装Hive && mysql (1)安装Hive Hive安装所需要的依赖(安装Hive前必须先安装jdk.hadoop) 1)jdk1.6以上 2)Hadoop要启动 未安装jdk ...

  5. spark有个节点特别慢,解决办法

    除解决数据倾斜问题外,还要开启推测执行,寻找另一个executor执行task,哪个先完成就取哪个结果,再kill掉另一个.

  6. webpack与vue使用

    项目基本结构目录: index.html <!DOCTYPE html> <html lang="en"> <head> <meta ch ...

  7. linux 设置别名

    [root@oldboyedu45-xy data]# alias(查找别名) alias cp='cp -i' alias l.='ls -d .* --color=auto' alias ll=' ...

  8. STL——容器(Set & multiset)的大小

    1. set.size();  //返回容器中元素的数目 2. set.empty();//判断容器是否为空 empty() 是由一下代码实现的,可以发现,当长度为0时返回 false,以此判断容器为 ...

  9. 设置非root账号不用sudo直接执行docker命令

    欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...

  10. gnuplot图例legend设置

    //将图例放在右下角 set key bottom //将图例放在中间 set key center //将图例放在左边 set key left //将图例放在指定位置右下角的坐标为(10,0.7) ...