html2d缩放代码,HTML5之SVG 2D入门1—SVG(可缩放矢量图形)概述

HTML5之SVG 2D入门1—SVG(可缩放矢量图形)概述

2019年07月25日

| 萬仟网IT编程

 | a48e1d17a2b0511faa7da7240b1971f6.png我要评论

可缩放矢量图形(Scalable Vector Graphics,简称SVG)是一种使用XML来描述二维图形的语言(SVG严格遵从XML语法),SVG 功能集包括嵌套转换、剪切路径、alpha 蒙板和模板对象,感兴趣的朋友... 13-01-30

位图与矢量图

以前,浏览器中显示的图形,例如jpeg、gif等,都是位图,这些图像格式是基于光栅的。在光栅图像中,图像文件定义了图像中每个像素的颜色值。浏览器需要读取这些值并做出相应行动。这种图像的再现能力比较强,但是在某些情形下会显得不足。例如,当浏览器以不同大小显示一副图像时,通常会产生锯齿边缘,这时,浏览器不得不为那些在原始图像中不存在的像素插入或猜测数值;这样会导致图像失真。此外,针对位图进行动画,最多也仅限于生成“翻动书本”类型的动画,即快速连续地显示单独图像。

矢量图通过指定为确定每个像素的值所需的指令而不是指定这些值本身,克服了这些困难中的一部分。例如,向量图形不再为一个直径一英寸的圆提供像素值,而是告诉浏览器创建一个直径一英寸的圆,然后让浏览器(或插件)做其余事情。这消除了光栅图形的许多限制;使用向量图形,浏览器只要知道它必须画一个圆。如果图像需要以正常大小的三倍来显示,那么浏览器只要按正确的大小画圆而不必执行光栅图像通常的插入法。类似地,浏览器接收的指令可以更容易地与外部信息源(如应用程序和数据库)绑定,要对图像制作动画,浏览器只要接收有关如何操纵属性(如半径或颜色)的指令即可。

html体系中,最常用的绘制矢量图的技术是svg和html5新增加的canvas元素。这两种技术都支持绘制矢量图和光栅图。

svg概述

可缩放矢量图形(scalable vector graphics,简称svg)是一种使用xml来描述二维图形的语言(svg严格遵从xml语法)。 svg允许三种类型的图形对象:矢量图形形状(例如由直线和曲线组成的路径)、图像和文本。 可以将图形对象(包括文本)分组、样式化、转换和组合到以前呈现的对象中。 svg 功能集包括嵌套转换、剪切路径、alpha 蒙板和模板对象。

svg绘图是交互式和动态的。 例如,可使用脚本来定义和触发动画。这一点与flash相比很强大。flash是二进制文件,动态创建和修改都比较困难。而svg是文本文件,动态操作是相当容易的。而且,svg直接提供了完成动画的相关元素,操作起来非常方便。

svg与其他web标准兼容,并直接支持文档对象模型dom。这一点也是与html5中的canvas相比很强大的地方(这里注意,svg内部也是用一个类似的canvas这样的东西来展示svg图形,到后面你会发现很多特性和html5的canvas还有点像;文中如果没明确说明是svg的canvas的话,都代指html5中的canvas元素)。因而,可以很方便的使用脚本实现svg的很多高级应用。而且svg的图形元素基本上都支持dom中的标准事件。可将大量事件处理程序(如“onmouseover”和“onclick”)分配给任何svg图形对象。 虽然svg的渲染速度比不上canvas元素,但是胜在dom操作很灵活,这个优势完全可以弥补速度上的劣势。

svg既可以说是一种协议,也可以说是一门语言;既是html的一个标准元素,也是一种图片格式。

svg并不是html5中的东西,但是也算页面时兴的技术之一,姑且也放到这个专题下了。

svg与其它图片格式的比较

svg与其它的图片格式相比,有很多优点(很多优点来源于矢量图的优点):

• svg文件是纯粹的xml, 可被非常多的工具读取和修改(比如记事本)。

• svg 与jpeg 和gif图像比起来,尺寸更小,且可压缩性更强。

• svg 是可伸缩的,可在图像质量不下降的情况下被放大,可在任何的分辨率下被高质量地打印。

• svg 图像中的文本是可选的,同时也是可搜索的(很适合制作地图)。

• svg 可以与 java 技术一起运行。

• svg 是开放的标准。

svg与flash的比较

svg 的主要竞争者是flash。与flash相比,svg 最大的优势是它与其他标准(比如xsl和dom)相兼容,操作方便,而flash则是未开源的私有技术。其它的比如存储的格式,动态生成图形等方面,svg也占有很大的优势。

svg的呈现方式

关于支持html5与svg的浏览器不是这里讨论的重点,基本上装上最新的chrome或者firefox浏览器就差不多了(ie用户请装ie9就对了,至于ie9之前的版本,需要装svg的插件,这里就直接略过了)。对于直接支持svg的浏览器,svg主要采用两面两种呈现的方式。

内联到html

svg是标准的html元素,直接写到html中就可以了,看下面的例子:

复制代码代码如下:

my first svg page

width="200px" height="200px">

fill="none" stroke="black"/>

style="stroke: black; fill: red;"/>

请注意开头的部分xml声明,与svg的命名空间xmlns、版本version等部分,主要是考虑兼容性的问题;这些部分在html5中基本都可以不用写了(写不写还是自己瞧着办吧)。

独立svg文件

独立svg指的是通过使用svg文件扩展名来提供向量图形文件格式。在浏览器中嵌入这个svg文件就可以使用了。

1.独立的svg文件/页面,定义的模板基本就像下面的一样:

复制代码代码如下:

把这样的文本文件保存成以svg为扩展名的文件,例如sun.svg,这样的文件可以直接用浏览器打开浏览,也可以作为引用嵌入到别的页面中。

2.html引用外部的svg文件。

使用object或者img元素嵌入svg图形就可以了,例如下面的小例子:

复制代码代码如下:

my first svg page

width="300px" height="300px">

your browser does not support svg - please upgrade to a modern browser.

svg not supported!

其实svg也可以放在其他的xml文档中,也可以像其他的xml文档一样,使用xml相关的技术格式化和验证,这个不是重点,此处略去了。

svg的渲染顺序

svg是严格按照定义元素的顺序来渲染的,这个与html靠z-index值来控制分层不一样。在svg中,写在前面的元素先被渲染,写在后面的元素后被渲染。后渲染的元素会覆盖前面的元素,虽然有时候受透明度影响,看起来不是被覆盖的,但是svg确实是严格按照先后顺序来渲染的。

注意:svg是以xml定义的,所以是大小写敏感的,这点与html不一样。

实用参考:

官方文档:http://www.w3.org/tr/svg11/

脚本索引:

开发中心:https://developer.mozilla.org/en/svg

热门参考:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。

如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

相关文章:

gif;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVQImWNgYGBgAAAABQABh6FO1AAAAABJRU5ErkJggg

本文介绍了一种时尚的网站设计方法,以及如何由浅入深的通过HTML5和浏览器渲染机制来构建高性能的站点。

&nbs...

一、基本绘图

首先,定义2d渲染变量ct(这里用了jquery库):

var ct = $(#canvasid).get(0)...

gif;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVQImWNgYGBgAAAABQABh6FO1AAAAABJRU5ErkJggg

曾几何时,网站上显示的灰度图像必须手动进行转换。现在使用HTML5画布,图像可以被巧妙的转换为灰色,而不必使用图像编辑软件。我下...

gif;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVQImWNgYGBgAAAABQABh6FO1AAAAABJRU5ErkJggg

示例代码托管在: "http://www.github.com/dashnowords/blogs" 博客园地址: "《大史住在大前端》原创博文目录...

收集总结的HTML5的新特性,基本除了IE9以下都可以使用。这篇文章给大家介绍了HTML5新增的标签和属性归纳总结,需要的朋友参考下吧... 18-05-02

gif;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVQImWNgYGBgAAAABQABh6FO1AAAAABJRU5ErkJggg

这篇文章讨论如何在基于Babylon.js的WebGL场景中,建立棋盘状的地块和多个可选择的棋子对象,在点选棋子时显示棋子的移动范围,并且在点击移动...

gif;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVQImWNgYGBgAAAABQABh6FO1AAAAABJRU5ErkJggg

一,效果图。 二,代码。

HTML5中加入了全新的结构型元素,例如页眉header,页脚footer,导航nav,内容article,章节section等除了这种整个页面的结构型元素,h...

HTML 5 是一个新的网络标准,目标在于取代现有的 HTML 4.01, XHTML 1.0 and DOM Level 2 HTML 标准.接下来通过本文给...

uniapp+Html5端实现PC端适配这篇文章主要介绍了uniapp+Html5端实现PC端适配,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一...

网友评论

387afa1e91d68b43eca6c11dc07bf577.gif

验证码:

498847.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值