svg标签
在页面上画图无非有两种方法,一种是canvas,另外一种就是svg了,canvas之前已经介绍过了,现在来介绍一下svg吧。
其实早在svg出现以前几年,微软已经推出了类似的东西,叫做vml,早期是为了使excel的图形转化为网页来展示而做的,但是由于过早的创新,当时并不被大家接受,后来svg出现,大家开始对这种“工具”产生兴趣,vml才重新被大家发现。(这个故事告诉大家,过早的创新也容易失败,因为每一种新生事物的出现都应该在大家能接受的范围以内,超出大家的认知太多,就不容易被大家接受了,人类都是恐惧新事物的~~)
svg标签写法:
<svg width="800" height="600">
<line x1="100" y1="100" x2="300" y2="400"></line>
</svg>
先做一个比较:
canvas:性能高,但是交互不方便
svg/vml:性能相对较低(特别在图形多的时候会更明显),但是实现交互和一般的html元素是一样的,可以实现onxxxx和addEventListener来绑定事件,进行交互~~
svg的用法和html元素类似,可以用css改变其某些样式(stroke,stroke-width,fill),可以通过dom获取svg元素,可以实现onxxxx和addEventListener来绑定事件。
不同的是:
- 获取具体属性值时不能用点表示法(形如line.x1),只能用(line.getAttribute('x1')和line.setAttribute('x1','200')),这样更接近于XML(看下面附图)
- 创建svg元素的时候,不能用document.createElement('line'),要用document.createElementNS('http://www.w3.org/2000/svg','line'),其实document.createElement是document.createElementNS('http://www.w3.org/1999/html','div')的简写而已
- svg属性只有css属性才能受transition动画影响,如果用js改变其他属性(例如circle的r),不会有过渡动画(但是chrome实现了,其他例如ff没有实现),只能自己写(setInterval或者requestAnimationFrame)
svg的几种简单的写法:
1.线 line 2.矩形 rect 3.圆 circle 4.椭圆 ellipse 5.多线 polyline 6.多边形 polygon
<svg width="800" height="600">
<line x1="50" y1="50" x2="100" y2="100"></line>
<rect x="150" y="150" width="100" height="50" rx="50" ry="10"></rect>
<circle cx="220" cy="80" r="40"></circle>
<ellipse cx="400" cy="100" rx="100" ry="50"></ellipse>
<polyline points="550,50 680,80 650,180 600,200 540,100"></polyline>
<polygon points="550,250 680,280 650,380 600,400 540,300"></polygon>
</svg>
值得注意的是圆和椭圆的圆心是cx,cy不是x,y,矩形和椭圆都有rx和ry。
svg最厉害的无疑是path了
掌握常用的指令: M(moveTo)、L(lineTo)、A(画弧)、Z(封闭路径)
M和L后面跟的都是点坐标,Z后面没有参数,
A的参数就比较复杂: 横半径 纵半径 x轴旋转 大弧标志 镜像标志(如果是1,取起点到终点连线的左边) 终点x 终点y
举个栗子:
<path d="
M 300,300
L 300,150
A 150,150,0,0,1,357,161
Z
"></path>
svg标签的更多相关文章
- web自动化之svg标签定位
今天在定位元素的时候,发现页面有一个svg标签需要进行定位. 于是便使用常规的xpath定位方法试了一下,很明显结果是不行的,哈哈哈... 错误定位方法://div[@class="oper ...
- svg 标签
SVG中的’defs’ and ‘use’-可复用的图元定义 在下一个示例中,我使用了defs中的元素之前,定义了如何去展现图元. <?xml version="1.0" s ...
- xpath如何使用正则、xpath定位svg标签、xpath常用集合
自己用到的xpath都收集下咯!!! 持续更新本页面 xpath查找svg图标 xpath('//*[local-name() = "svg" and @class="_ ...
- d3.js svg中 g 标签问题一览
svg 中的g标签, 算是比较特殊 1 没有x y属性 2 没有width height 属性 3 不能fill 4 .... g标签基本只管分组问题, 其他功能一概不提供 要解决这些问题, 直接在g ...
- svg image标签降级技术
1.svg image标签降级技术: svg不能很好的在anroid2.3中得到支持,需要额外的补充,IE8-以及Android 2.3默认浏览器是不支持SVG的. svg image标签降级技术,这 ...
- 获取SVG中g标签的宽度高度及位置坐标
1. 问题的出现 对于普通的HTML元素,有很多获得其宽度width.高度height.距左left.距顶top等属性的方法: 类似offsetWidth,clientWidth,width之类的,通 ...
- 【Web动画】SVG 线条动画入门
通常我们说的 Web 动画,包含了三大类. CSS3 动画 javascript 动画(canvas) html 动画(SVG) 个人认为 3 种动画各有优劣,实际应用中根据掌握情况作出取舍,本文讨论 ...
- HTML5_04之SVG绘图
1.关于Canvas绘制图像: 问题:需要绘制多张图片时,必须等待所有图片加载完成才能开始绘制:而每张图片都是异步请求,彼此没有先后顺序,哪一张先加载完成完全无法预测: 方案: var progres ...
- Notes:SVG(1)
SVG,"Scalable Vector Graphics"可伸缩矢量图形,基于可扩展标记语言,用于描述二维矢量图形的一种图形格式. SVG是纯粹的XML,可以使用以下方法插入到H ...
随机推荐
- 《Linux内核分析》 第八节 进程的切换和一般的执行过程
张嘉琪 原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 Linux内核分析 第八 ...
- linux内核分析实践二学习笔记
Linux实践二--内核模块的编译 标签(空格分隔): 20135328陈都 理解内核的作用 Linux内核[kernel]是整个操作系统的最底层,它负责整个硬件的驱动,以及提供各种系统所需的核心功能 ...
- <<梦断代码>>阅读笔记二
这是第二篇读书笔记,这本书我已经读了有一大半了,感觉书中所描述的人都是疯子,一群有创造力,却又耐得住寂寞的疯子. 我从书中发现几点我比较感兴趣的内容. 第一个,乐高之梦.将程序用乐高积木一样拼接起来. ...
- Leetcode——53.最大子序和
@author: ZZQ @software: PyCharm @file: leetcode53_最大子序和.py @time: 2018/11/26 12:39 要求:给定一个整数数组 nums ...
- “数学口袋精灵”App的第三个Sprint计划----开发日记(第十一天12.17)
项目进度: 基本完成一个小游戏,游戏具有:随机产生算式,判断对错功能.通过轻快的背景音乐,音效,给玩家提供一个良好的氛围. 任务分配: 冯美欣:设计"数学口袋精灵"App图标.整 ...
- Android Studio 打包AAR和第三方静态库
需求 现在有一个第三方库libstatic_add.a和对应的头文件static.h,要求封装一个Module,该Module依赖这个静态库,要求打包的Module包含该静态库. 方案 创建Andro ...
- java中实现全局变量的功能
一.通过接口实现 二.通过静态变量 static声明 package test.autorun; import java.util.LinkedList; import java.util.Queu ...
- ADC转换的分辨率
分辨率是指ADC能够分辨量化的最小信号的能力.分辨率用二进制位数表示.例如对一个10位的ADC,其所能分辨的最小量化电平为参考电平(满量程)的2的10次方分之一.也就是说分辨率越高,就能把满量程里的电 ...
- Quartz应用与集群原理分析
Quartz在CRM中的应用场景: https://tech.meituan.com/mt-crm-quartz.html https://www.mtyun.com/library/mt-crm-q ...
- [转帖] YAML 快速入门
https://www.jianshu.com/p/97222440cd08 原始文档更加易读. YAML快速入门 叩丁狼教育 关注 2018.02.18 19:19* 字数 1776 阅读 876评 ...