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. ActiveMQ Cannot send, channel has already failed: tcp:127.0.0.1:8161

    仅针对如下错误内容: Cannot send, channel has already failed: tcp://127.0.0.1:8161 一种尝试解决,修改连接端口为 61616: tcp:/ ...

  2. 老猿学5G:融合计费基于流计费的触发器Triggers

    ☞ ░ 前往老猿Python博文目录 ░ 一.概述 每个触发条件都是一个可计费事件.SMF中的功能体CTF在用户上网时达到一定条件就会向CHF上报流量,而CTF什么时候触发流量上报是由CTF中的触发器 ...

  3. 老猿学5G扫盲贴:NEF、NRF、AF、UPF以及DN的功能

    专栏:Python基础教程目录 专栏:使用PyQt开发图形界面Python应用 专栏:PyQt入门学习 老猿Python博文目录 NEF:Network Exposure Function ,网络开放 ...

  4. Python函数的关键字参数

    除了位置参数的函数参数使用方式,还有一种在函数调用时指定形参等于指定实参的参数使用模式,该模式称为关键字参数.关键字参数使用可以不按形参的顺序传递实参,系统按形参的名字确认实参传递给哪个参数. 具体内 ...

  5. 转:浅析windows下字符集和文件编码存储/utf8/gbk

    最近老猿在学习文件操作及网络爬虫相关知识,发现字符集及编码的处理非常重要,而老猿原来对此了解并不多,因此找了几篇文章看了一下,将老猿认为比较的相关文章转载一下.感谢各位原创大神! 1,字符集 这里主要 ...

  6. Hbase 简单封装(Hbase 2.0+ API)

    前言 封装了一些常用的方法 添加一行数据 创建表(单列族) 创建表(多列族) 删除表 判断表是否存在 获取一行数据(根据rowkey) 获取某个列族某个列的某行数据 打印出result(方便展示数据) ...

  7. 认识 Cargo-Rust构建工具和包管理器

    认识 Cargo-Rust构建工具和包管理器 上两篇文章 都有说到 hello world 程序,但是我们如果使用自己创建文件的方式创建项目,一旦文件多了,那得多麻烦,整个项目将变得难以管理.下面我来 ...

  8. Codeforces Edu Round 62 A-E

    A. Detective Book 模拟题,有一些细节需要注意. #include <cstdio> #include <iostream> #include <cmat ...

  9. NPM相关知识点

    1.Windows环境变量的配置 npm config set prefix "D:\Program Files\nodejs\node_global" npm config se ...

  10. 基于menu小插件探索工程实践

    目录 一.准备工作 1.C/C++环境搭建 2.VSCode的配置 (1) 安装插件: (2) 设置配置文件: 二.工程化编程实战 1.模块化设计 2.可重用设计:进一步抽象 menu的进一步优化 可 ...