《SVG精髓》笔记(一)
本文是基于《SVG精髓》一书的简单总结,文中的demo均为该书提供,目的是方便大家使用时快速查阅。
1. 坐标系统
- 视口(viewport):文档使用的画布区域,表示SVG可见区域的大小,通常可以在 
<svg>元素上使用 width 和 height 属性确定视口的大小。 viewBox:允许指定一个给定的一组图形伸展以适应特定的容器元素。这个属性值由4个数值组成,
viewBox = <min-x> <min-y> <width> <height>, 分别代表想要叠加在视口上的用户坐标系统的最小x坐标、最小y坐标、宽度和高度。(可以理解为SVG内元素定位的真实坐标系统)<svg width="4cm" height="5cm" viewBox="0 0 64 80">
<rect x="10" y="20" width="40" height="40" style="stroke: black; fill: none"/>
</svg>
viewport宽高为4cm和5cm(画布区域),viewBox的左上角(0, 0)与viewport重合,宽度是64个单位(每个单位1/16cm),高度是80个单位(每个单位1/16cm)。矩形rect的坐标是相对viewBox来定位的(如果没有设置viewBox,默认坐标系统就是viewport)demo1preserveAspectRatio:可以指定被缩放的图像相对视口的对齐方式,以及是希望它适配边缘还是要裁减。该属性的模型为:
preserveAspectRatio = "alignment [meet | slice]"alignment :指定轴和位置,由一个x对齐方式和一个y对齐方式(min, mid, max)组合而成。默认为
xMidYMid。y对齐 xMin xMid xMax yMin xMinYmin 
视口左侧边缘、顶部边缘对齐xMidYmin 
视口水平中心、顶部边缘对齐xMaxYmin 
视口右侧边缘、顶部边缘对齐yMid xMinYmid 
视口左侧边缘、垂直中心xMidYmid 
视口水平中心、垂直中心xMaxYmid 
视口右侧边缘、垂直中心yMax xMinYmax 
视口左侧边缘、底部边缘对齐xMidYmax 
视口水平中心、底部边缘对齐xMaxYmax 
视口右侧边缘、底部边缘对齐meet :缩小图像以适配可用的空间。
slice :裁减图像不适合视口的部分。
上面的例子中,viewport和viewBox的宽高是等比缩放的,如果比例不同,就有可能出现溢出demo2
2. 基本形状
SVG中的基本形状
形状 描述 <line x1="start-x" y1="start-y" x2="end-x" y2="end-y" /> 从起始点(start-x, start-y) 画一条线到 (end-x, end-y) demo <rect x="left-x" y="top-y" width="width" height="height" /> 画一个矩形,左上角位于(left-x, top-y),宽高分别为width和height demo <circle cx="center-x" cy="center-y" r="radius" /> 以指定半径radius画一个圆,圆心位于(center-x, center-y) demo <ellipse cx="center-x" cy="center-y" rx="x-radius" ry="y-radius" /> 画一个椭圆,x方向半径为x-radius,y方向半径为y-radius, 圆心位于(center-x, center-y) <polygon points="points-list" /> 画一个封闭图形,轮廓由points-list指定,它由一系列x/y坐标对组成。 这些数值只能使用用户坐标,不可以添加长度单位。 demo <polyline points="points-list" /> 画一系列相连的折线段,折线点由points-list指定, 它由一系列x/y坐标对组成。 这些数值只能使用用户坐标,不可以添加长度单位。 demo 笔画特性
属性 值 stroke 笔画颜色,默认为none demo stroke-width 笔画宽度,可用用户坐标或者指定单位的方式指定。 笔画的宽度会相对坐标网格线居中。默认值为1 demo stroke-opacity 从0.0到1.0的数字。0.0是完全透明,1.0是完全不透明(默认值) demo stroke-dasharray 用一系列的数字来指定虚线和间隙的长度。 这些数字只能使用用户坐标,默认值为none demo stroke-linecap 线头尾的形状,值为butt(默认值)、round或square demo stroke-linejoin 图形的棱角或者一系列连线的状态, 取值为miter(尖的,默认值),round或者bevel(平的) demo stroke-miterlimit 相交处显示宽度与线宽的最大比例,默认值是4 demo 填充特性
属性 值 fill 填充颜色,默认值为black fill-opacity 从0.0到1.0的数字。0.0是完全透明,1.0是完全不透明(默认值) fill-rule 属性值为nonzero(默认值)或evenodd。 该属性决定判断某个点是否在图形内部的方法。 只有当边线交叉时或者内部有“洞”时才有效。 
这里只介绍了该书的两个章节,它们是理解学习SVG的基础。接下来,我们将一起学习SVG里面常用的元素标签和坐标系统变换。
《SVG精髓》笔记(一)的更多相关文章
- python程序设计语言笔记   第一部分   程序设计基础
		
1.1.1中央处理器(CPU) cpu是计算机的大脑,它从内存中获取指令然后执行这些指令,CPU通常由控制单元和逻辑单元组成. 控制单元用来控制和协调除cpu之外的其他组件的动作. 算数单元用来完成数 ...
 - C程序设计语言笔记-第一章
		
The C Programming language notes 一 基础变量类型.运算符和判断循环 char 字符型 character ...
 - 北京大学Cousera学习笔记--6-计算导论与C语言基础--计算机的基本原理-认识程序设计语言 如何学习
		
1.是一门高级程序语言 低级语言-机器语言(二进制) 汇编语言-load add save mult 高级语言:有利于人们编写理解 2.C语言的规范定义非常的宽泛 1.long型数据长度不短于int型 ...
 - MOOC 编译原理笔记(一):编译原理概述以及程序设计语言的定义
		
编译原理概述 什么是编译程序 编译程序指:把某一种高级语言程序等价地转换成另一张低级语言程序(如汇编语言或机器代码)的程序. 高级语言程序-翻译->机器语言程序-运行->结果. 其中编译程 ...
 - 20145213《Java程序设计学习笔记》第六周学习总结
		
20145213<Java程序设计学习笔记>第六周学习总结 说在前面的话 上篇博客中娄老师指出我因为数据结构基础薄弱,才导致对第九章内容浅尝遏止地认知.在这里我还要自我批评一下,其实我事后 ...
 - javascript高级程序设计阅读笔记(一)
		
javascript高级程序设计阅读笔记(一) 工作之余开发些web应用作为兴趣,在交互方面需要掌握javascript和css.HTML5等技术,因此读书笔记是必要的. javascript简介 J ...
 - 《c++程序设计》笔记
		
本文是学习谭浩强老师的<c++程序设计>后的笔记. 1.概述 c++是贝尔实验室在c语言的基础上发展而来,与c兼容.用c语言写的程序可以不加修改用于c++.从c++的名字可以看出它是c的超 ...
 - 003-scanf函数使用和表达式-C语言笔记
		
003-scanf函数使用和表达式-C语言笔记 学习目标 1.[掌握]输入函数scanf的基本使用方法 2.[掌握]输入函数scanf运行原理和缓冲区理解 3.[掌握]算术运算符和算术表达式的使用 4 ...
 - 操作系统和程序设计语言的API使用的字符编码分析
		
1.Java的运行环境中,String是什么编码? 使用java做程序设计语言,字符编码是和jvm相关的,和操作系统无关. java默认的编码是jvm在安装的时候就确定了的,它是根据你的系统的环境确 ...
 - 扩展《C程序设计语言》练习2-3程序通用性
		
最近开始自学C语言,在看K&R的<C程序设计语言>.练习2-3要求写一个函数,将输入的十六进制数字字符串转换成与之等价的整数值,配套答案没有扩展程序的通用性,所以我就稍微改造改造. ...
 
随机推荐
- 多路径IO
			
多路径IO(MPIO)是一个微软架构,通过在存储设备和windows操作系统之间提供一个备用数据路径,来减轻主机总线适配器(HBA)故障的影响,MPIO能够支持多达32个备用路径,来增加Windows ...
 - 包银消费CTO汤向军:消费金融大数据风控架构与实践
			
1 业务架构 风控平台是相对独立的系统,信审的案件可以从借款端平台推过来,也可以从第三方平台推过来.信审案件到达风控平台后,自动创建工作流,根据风控流程处理各流程环节任务. •自动决策 风控流程自动处 ...
 - [转]史上最最最详细的手写Promise教程
			
我们工作中免不了运用promise用来解决异步回调问题.平时用的很多库或者插件都运用了promise 例如axios.fetch等等.但是你知道promise是咋写出来的呢? 别怕-这里有本promi ...
 - Linux挂载磁盘&kuoron
			
1.添加磁盘 物理服务器直接插上硬盘即可,虚拟机的话给直接添加磁盘即可,不懂的可以自行百度,比较简单. 2.管理磁盘分区,fdisk命令. 在Linux系统中,管理硬盘设备最常用的方法就当属 fdis ...
 - python学习-6 猜拳小游戏
			
import random # 调用随机数模块 pc = random.randint(1,3) # 产生1-3的随机数 print("来玩个猜拳游戏吧!") a = '石头' b ...
 - Python基础总结之第七天开始【认识函数的参数以及返回】(新手可相互督促)
			
周日的早上,吃的饱饱,刷刷抖音,开始学习新一天的知识了~~~ 函数的参数: 昨天的笔记中,我们已经使用了参数,在案例中的name和sex 就是参数. 一般的函数都是有参数的,函数的参数都是放在函数定义 ...
 - Python基础 第四章 字典(2)字典方法&章小结
			
1. clear 方法clear删除所有的字典项,就地执行,什么都不返回(或者说返回None) d = {} d['name'] = 'Gumby' d['age'] = 42 print(d) re ...
 - python以不同方式打印输出九九乘法表
			
参考:http://www.cnblogs.com/suiy-160428/p/5594389.htmlpython输出 9*9 乘法口诀表 矩形输出九九乘法表: for i in range(1,1 ...
 - 怎样获取从服务器返回的xml或html文档对象
			
使用 xhr.responseXML; 通过这个属性正常获取XML或HTML文档对象有两个前置条件: 1. Content-Type头信息的值等于: text/xml 或 application/x ...
 - 虚拟机CentOS启动报错-entering emergency mode解决办法
			
转载自:https://blog.csdn.net/csdn_yym/article/details/87970960 解决方法只需要在这里的shell键入一条命令: xfs_repair -v -L ...