HTML5基础之SVG教程

一.什么是svg?

SVG 指的是可伸缩矢量图形 (Scalable Vector Graphics),它用来定义用于网络的基于矢量的图形,使用 XML 格式定义图形。SVG 图像在放大或改变尺寸的情况下其图形质量不会有所损失。此外SVG 是万维网联盟的标准,SVG 与诸如 DOM 和 XSL 之类的 W3C 标准是一个整体。 2003 年一月,SVG 1.1 被确立为 W3C 标准。与其他图像格式相比,使用 SVG 的优势有以下几点:

1.SVG 可被非常多的工具读取和修改(比如记事本)2.SVG 与 JPEG 和 GIF 图像比起来,尺寸更小,且可压缩性更强。3.SVG 是可伸缩的4.SVG 图像可在任何的分辨率下被高质量地打印5.SVG 可在图像质量不下降的情况下被放大6.SVG 图像中的文本是可选的,同时也是可搜索的(很适合制作地图)7.SVG 可以与 Java 技术一起运行8.SVG 是开放的标准9.SVG 文件是纯粹的 XML

登录后复制

SVG 的主要竞争者是 Flash,与 Flash 相比,SVG 最大的优势是与其他标准(比如 XSL 和 DOM)相兼容。而 Flash 则是未开源的私有技术。

二.SVG 实例

下面的例子是一个简单的 SVG 文件的例子。SVG 文件必须使用 .svg 后缀来保存:

立即学习“前端免费学习笔记(深入)”;

nbsp;svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">     

登录后复制

HTML5基础之SVG教程

运行结果

代码解释
第一行包含了 XML 声明。请注意 standalone 属性!该属性规定此 SVG 文件是否是“独立的”,或含有对外部文件的引用。 standalone=”no” 意味着 SVG 文档会引用一个外部文件 – 在这里,是 DTD 文件。第二引用了这个外部的 SVG DTD。该 DTD 位于 W3C,含有所有允许的 SVG 元素。

1.SVG 代码以 元素开始,包括开启标签 和关闭标签 ,这是根元素。
2.widthheight 属性可设置此 SVG 文档的宽度和高度。version 属性可定义所使用的 SVG 版本,xmlns 属性可定义 SVG 命名空间。
3.SVG 的 用来创建一个圆,cxcy 属性定义圆中心的 xy 坐标。如果忽略这两个属性,那么圆点会被设置为 (0, 0)。r 属性定义圆的半径。
4.strokestroke-width 属性控制如何显示形状的轮廓。我们把圆的轮廓设置为 2px 宽,红色边框。
5.fill 属性设置形状内的颜色。我们把填充颜色设置为原谅色。
关闭标签的作用是关闭 SVG 元素和文档本身。
注意:所有的开启标签必须有关闭标签!

HTML 页面中的 SVG
SVG 文件可通过以下标签嵌入 HTML 文档: 、 或者 。

三种把 SVG 文件嵌入 HTML 页面的不同方法。

使用 标签

标签被所有主流的浏览器支持,并允许使用脚本。

注释:当在 HTML 页面中嵌入 SVG 时使用 标签是 Adobe SVG Viewer 推荐的方法!然而,如果需要创建合法的 XHTML,就不能使用 。任何 HTML 规范中都没有 标签。
语法:


登录后复制

注释:pluginspage 属性指向下载插件的 URL。

使用 标签

标签是 HTML 4 的标准标签,被所有较新的浏览器支持。它的缺点是不允许使用脚本。

注释:假如您安装了最新版本的 Adobe SVG Viewer,那么当使用 标签时 SVG 文件无法工作(至少不能在 IE 中工作)!

语法:

登录后复制

注释:codebase 属性指向下载插件的 URL。

使用 标签

标签可工作在大部分的浏览器中。

语法:


登录后复制

三.SVG 各形状介绍

(一)SVG 矩形
能根据之前的圆形联想到,rect元素会在屏幕上绘制一个矩形 。其实只要6个基本属性就可以控制它在屏幕上的位置和形状。

    

登录后复制

HTML5基础之SVG教程

运行结果.png

代码解释:

rect 元素的 width 和 height 属性可定义矩形的高度和宽度
style 属性用来定义 CSS 属性
CSS 的 fill 属性定义矩形的填充颜色(rgb 值、颜色名或者十六进制值)
CSS 的 stroke-width 属性定义矩形边框的宽度
CSS 的 stroke 属性定义矩形边框的颜色
x 属性定义矩形的左侧位置(例如,x=”0″ 定义矩形到浏览器窗口左侧的距离是 0px)
y 属性定义矩形的顶端位置(例如,y=”0″ 定义矩形到浏览器窗口顶端的距离是 0px)
CSS 的 fill-opacity 属性定义填充颜色透明度(合法的范围是:0 – 1)
CSS 的 stroke-opacity 属性定义笔触颜色的透明度(合法的范围是:0 – 1
CSS 的 opacity 属性定义整个元素的透明值(合法的范围是:0 – 1)
rx 和 ry 属性可使矩形产生圆角。

(二)SVG 圆形:详细见上svg实例

(三)SVG椭圆:
ellipse 标签可用来创建椭圆。椭圆与圆很相似。不同之处在于椭圆有不同的 x 和 y 半径,而圆的 x 和 y 半径是相同的。

    

登录后复制

HTML5基础之SVG教程

运行结果.png

代码解释:

cx 属性定义圆点的 x 坐标
cy 属性定义圆点的 y 坐标
rx 属性定义水平半径
ry 属性定义垂直半径

(四)SVG线条
line 标签用来创建线条

    

登录后复制

HTML5基础之SVG教程

运行结果.png

代码解释:

x1 属性在 x 轴定义线条的开始
y1 属性在 y 轴定义线条的开始
x2 属性在 x 轴定义线条的结束
y2 属性在 y 轴定义线条的结束

(五)SVG多边形
polygon 标签用来创建含有不少于三个边的图形。它们都是由连接一组点集的直线构成。polygon的路径在最后一个点处自动回到第一个点。需要注意的是,矩形也是一种多边形,如果需要更多灵活性的话,你也可以用多边形创建一个矩形。

    

登录后复制

HTML5基础之SVG教程

运行结果.png

代码解释:

points 属性定义多边形每个角的 x 和 y 坐标
点集数列。每个数字用空白符、逗号、终止命令或者换行符分隔开。每个点必须包含2个数字,一个是x坐标,一个是y坐标。所以点列表 (0,0), (1,1) 和(2,2)可以写成这样:“0 0, 1 1, 2 2”。路径绘制完后闭合图形,所以最终的直线将从位置(2,2)连接到位置(0,0)。

(六)SVG 折线
polyline 标签用来创建仅包含直线的形状。它是一组连接在一起的直线。因为它可以有很多的点,折线的的所有点位置都放在一个points属性中:

    

登录后复制

HTML5基础之SVG教程

运行结果.png

points
点集数列。每个数字用空白符、逗号、终止命令或者换行符分隔开。每个点必须包含2个数字,一个是x坐标,一个是y坐标。所以点列表 (0,0), (1,1) 和(2,2)可以写成这样:“0 0, 1 1, 2 2”。路径绘制完后闭合图形,所以最终的直线将从位置(2,2)连接到位置(0,0)。

四.SVG 滤镜简介

 所有互联网的SVG滤镜定义在 元素中, 标签用来定义SVG滤镜, 标签使用必须的ID属性来定义向图形应用到那个滤镜中。在 SVG 中,可用的滤镜有:

feBlend SVG 滤镜。使用不同的混合模式把两个对象合成在一起。feColorMatrix SVG 滤镜。应用matrix转换。feComponentTransfer SVG 滤镜。执行数据的 component-wise 重映射。feComposite SVG 滤镜。feConvolveMatrix SVG 滤镜。feDiffuseLighting SVG 滤镜。feDisplacementMap SVG 滤镜。feDistantLight SVG 滤镜。 Defines a light sourcefeFlood SVG 滤镜。feGaussianBlur SVG 滤镜。对图像执行高斯模糊。feImage SVG 滤镜。feMerge SVG 滤镜。创建累积而上的图像。feMorphology SVG 滤镜。 对源图形执行"fattening" 或者 "thinning"。feOffset SVG 滤镜。相对与图形的当前位置来移动图像。fePointLight SVG 滤镜。feSpecularLighting SVG 滤镜。feSpotLight SVG 滤镜。feTile SVG 滤镜。feTurbulence SVG 滤镜。

登录后复制

注释:您可以在每个 SVG 元素上使用多个滤。

(一)SVG 高斯滤镜
标签必须嵌套在 标签内。 标签是 definitions 的缩写,它允许对诸如滤镜等特殊元素进行定义。

                                   

登录后复制

HTML5基础之SVG教程

运行结果.png

代码解释:

标签的 id 属性可为滤镜定义一个唯一的名称(同一滤镜可被文档中的多个元素使用)
filter:url 属性用来把元素链接到滤镜。当链接滤镜 id 时,必须使用 # 字符
滤镜效果是通过 标签进行定义的。fe 后缀可用于所有的滤镜
标签的 stdDeviation 属性可定义模糊的程度
in=”SourceGraphic” 这个部分定义了由整个图像创建效果。

(二)SVG 阴影效果
feOffset 元素用于创建阴影效果
偏移一个矩形(带 ),然后混合偏移图像顶部(含 )
SVG代码:

                          

登录后复制

HTML5基础之SVG教程

运行结果.png

代码解释
标签的 id 属性可为滤镜定义一个唯一的名称(同一滤镜可被文档中的多个元素使用)
filter:url 属性用来把元素链接到滤镜。当链接滤镜 id 时,必须使用 # 字符

(三)SVG 线性渐变
 渐变是一种从一种颜色到另一种颜色的平滑过渡。另外,可以把多个颜色的过渡应用到同一个元素上。

在 SVG 中,有两种主要的渐变类型:

线性渐变
放射性渐变
可用来定义 SVG 的线性渐变。

标签必须嵌套在 的内部。 标签是 definitions 的缩写,它可对诸如渐变之类的特殊元素进行定义。

线性渐变可被定义为水平、垂直或角形的渐变:

当 y1 和 y2 相等,而 x1 和 x2 不同时,可创建水平渐变
当 x1 和 x2 相等,而 y1 和 y2 不同时,可创建垂直渐变
当 x1 和 x2 不同,且 y1 和 y2 不同时,可创建角形渐变

                                                                      

登录后复制

HTML5基础之SVG教程

运行结果.png

代码解释:
1. 标签的 id 属性可为渐变定义一个唯一的名称。
2.fill:url(#orange-red) 属性把 ellipse 元素链接到此渐变。
3. 标签的 x1、x2、y1、y2 属性可定义渐变的开始和结束位置。
4.渐变的颜色范围可由两种或多种颜色组成。每种颜色通过一个 标签来规定。offset 属性用来定义渐变的开始和结束位置。

(四)SVG 放射渐变
用来定义放射性渐变。

                                                                  

登录后复制

HTML5基础之SVG教程

运行结果.png

代码解释:
   标签的 id 属性可为渐变定义一个唯一的名称,fill:url(#grey-blue) 属性把 ellipse 元素链接到此渐变,cx、cy 和 r 属性定义外圈,而 fx 和 fy 定义内圈 渐变的颜色范围可由两种或多种颜色组成。每种颜色通过一个 标签来规定。offset 属性用来定义渐变的开始和结束位置。

以上就是HTML5基础之SVG教程的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2909988.html

(0)
上一篇 2025年3月11日 04:27:59
下一篇 2025年3月10日 12:21:42

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • 如何利用HTML5实现等待加载动画的效果

    详细代码如下所示:      100 登录后复制   *{margin:0;padding:0;}    .loading{          height:100%;width:100%;position:fixed;background…

    2025年3月11日
    200
  • 利用html5自定义实现播放器代码分享

    本篇文章主要介绍了从零实现一个自定义html5播放器的示例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧 本次的分享是一个基于HTML5标签实现的一个自定义视频播放器。其中实现了播放暂停、进度拖拽、音量控制…

    2025年3月11日
    200
  • HTML5实现眼睛移动效果的示例

    这篇文章主要介绍了基于html5陀螺仪实现ofo首页眼睛移动效果的示例,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 最近用ofo小黄车App的时候,发现以前下方扫一扫变成了一个眼睛动的小黄人,觉得蛮有意思的,这里用HTML5仿一下效果…

    2025年3月11日 编程技术
    200
  • html5碎片式图片切换制作方法详解

    本篇文章主要介绍了html5教你做炫酷的碎片式图片切换 (canvas) ,具有一定参考价值,有兴趣的可以了解一下 前言 老规矩,先上源码。图片区域是可以点击的,动画会从点击的位置开始发生。 本来这个效果是我3年前做的,只是当是是用无数个 …

    2025年3月11日 编程技术
    200
  • HTML5制作贪吃蛇游戏

    本篇文章主要介绍了h5 canvas实现贪吃蛇小游戏,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧 本文介绍了H5 canvas实现贪吃蛇小游戏,分享给大家,具体如下: 实现效果如下 实现思路: ps:这个只是…

    2025年3月11日
    200
  • HTML5加载时的等待动画效果制作

    这篇文章通过实例代码给大家介绍了html5等待加载动画效果的完美解决方案,感兴趣的朋友参考下吧 废话不多说了,直接给大家贴代码了,具体代码如下所示:      100 登录后复制   *{margin:0;padding:0;}    .l…

    2025年3月11日
    200
  • HTML5 IndexedDB本地储存

    indexeddb 是一种低级api,用于客户端存储大量结构化数据(包括, 文件/ blobs)。下面通过本文重点给大家介绍html5本地存储之indexeddb的相关知识,感兴趣的朋友一起看看吧 IndexedDB 是一种低级API,用于…

    编程技术 2025年3月11日
    200
  • HTML5通过api实现拖放排序的实例教程

    html5 中提供了直接拖放的 api,极大的方便我们实现拖放效果,不需要去写一大堆的 js,只需要通过监听元素的拖放事件就能实现各种拖放功能。 前言 html5 中提供了直接拖放的 api,极大的方便我们实现拖放效果,不需要去写一大堆的 …

    编程技术 2025年3月11日
    200
  • 解决在HTML5中的video标签无法播放视频的方法

    这篇文章主要给大家介绍了关于解决html5中video标签无法播放mp4问题的办法,文中介绍的非常详细,相信会对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起看看吧。 前言 最近发现了一个问题,在手机录制了一个1.mp4文…

    2025年3月11日
    200
  • Html5新增标签总结

    这篇文章给大家整理了html5新增的九个标签,非常不错,需要的朋友参考下 今天新学习了9个标签、 简单的说就是一个音频标签,他的主要常用属性有src=””音频的路径 controls=”controls&…

    编程技术 2025年3月11日
    200

发表回复

登录后才能评论