返回顶部
首页 > 资讯 > 前端开发 > VUE >HTML5的SVG元素怎么应用
  • 724
分享到

HTML5的SVG元素怎么应用

2024-04-02 19:04:59 724人浏览 泡泡鱼
摘要

本篇内容介绍了“HTML5的SVG元素怎么应用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成! 组合-g元

本篇内容介绍了“HTML5的SVG元素怎么应用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

组合-g元素

g元素是一种容器,它组合一组相关的图形元素成为一个整体;这样,我们就可以对这个整体进行操作。这个元素通常可以和desc和title元素配合使用,提供文档的结构信息。结构良好的文档通常可读性和渲染效率都不错。看一个小例子:

复制代码 代码如下:

<svgxmlns="Http://www.w3.org/2000/svg"

version="1.1"width="5cm"height="5cm">

<desc>Twogroups,eachoftworectangles</desc>

<gid="group1"fill="red">

<rectx="1cm"y="1cm"width="1cm"height="1cm"/>

<rectx="3cm"y="1cm"width="1cm"height="1cm"/>

</g>

<gid="group2"fill="blue">

<rectx="1cm"y="3cm"width="1cm"height="1cm"/>

<rectx="3cm"y="3cm"width="1cm"height="1cm"/>

</g>

<!--Showoutlineofcanvasusing'rect'element-->

<rectx=".01cm"y=".01cm"width="4.98cm"height="4.98cm"

fill="none"stroke="blue"stroke-width=".02cm"/>

</svg>

注意几点:

1.xmlns="http://www.w3.org/2000/svg"表明了整个svg元素默认的命名空间是svg。这个在无歧义的时候可以省略。这里由于svg文档是一个XML文档,XML命名空间的相关规则这里都是适用的。例如可以给svg显示的指定命名空间,给命名空间提供别名等。

2.g元素是可以嵌套的。

3.组合起来的图形元素就和单个的元素一样,可以给id值,这样,需要的时候(例如动画和重用一组元素)只用引用这个id值就可以了。

4.组合一组图形元素可以统一设置这组元素的相关属性(fill,stroke,transfORM等),这也是使用组合的一种场景。

模板-symbol元素

symbol元素用于定义图形模板(模板可以包含很多图形),这个模板可以被use元素实例化。模板的功能与g元素很相似,都是提供一组图形对象,但是也有一些区别。与g元素不同的地方是:

1.symbol元素本身是不会被渲染的,只有symbol模板的实例会被渲染。

2.symbol元素可以拥有属性viewBox和preserveAspectRatio,这些允许symbol缩放图形元素。

从渲染角度来说,与symbol元素相似的元素是marker(定义箭头和标号)和pattern(定义颜色)元素;这些元素不会直接被渲染;他们的使用方式基本都是由use元素去实例化。正是这个原因,对于symbol来说,'display'属性是没有意义的。

下面这个修改过的代码显示了symbol的使用方式:

复制代码 代码如下:

<svgxmlns="http://www.w3.org/2000/svg"

xmlns:xlink="http://www.w3.org/1999/xlink"

version="1.1"width="5cm"height="5cm">

<desc>Twogroups,eachoftworectangles</desc>

<symbolid="group1"fill="red">

<rectx="1cm"y="1cm"width="1cm"height="1cm"/>

<rectx="3cm"y="1cm"width="1cm"height="1cm"/>

</symbol>

<gid="group2"fill="blue">

<rectx="1cm"y="3cm"width="1cm"height="1cm"/>

<rectx="3cm"y="3cm"width="1cm"height="1cm"/>

</g>

<usexlink:href="#group1"target="_blank"rel="nofollow">

<!--Showoutlineofcanvasusing'rect'element-->

<rectx=".02cm"y=".02cm"width="4.96cm"height="4.96cm"

fill="none"stroke="blue"stroke-width=".02cm"/>

</svg>

定义-defs元素

SVG允许定义一组对象,然后重用这组对象(注意,不仅仅是图形对象)。最常见的例子如定义渐变色,然后再其他的图形对象中赋给fill属性。渐变色定义的时候是不会渲染的,所以这类型的对象可以放到任何地方。重用对于图形对象中也是经常存在的,而且我们也不希望定义的时候直接渲染,而是想在引用的地方渲染,这个可以用defs元素实现。

通常情况下,推荐的做法是:只要有可能,就把被引用的对象放到defs元素中。这些对象通常是:altGlyphDef,clipPath,cursor,filter,marker,mask,pattern,linearGradient,radialGradient,symbol和图形对象等。把这些对象定义在defs元素中很容易理解,所以就提高了可访问性。

其实作为容器对象的g元素、symbol元素、defs元素都不同程度上提供了重用的作用,只不过每个元素的特性可能少许不同:比如g元素是直接渲染的,symbol和defs不会直接渲染,symbol含有viewBox属性,会创建新的视窗。

通常都会给在defs中定义的元素赋予id属性,并在用到的地方直接使用。根据元素的不同,这些定义可以用到不同地方,比如下面的渐进色作为属性来使用了:

复制代码 代码如下:

<svgwidth="8cm"height="3cm"

xmlns="http://www.w3.org/2000/svg"version="1.1">

<desc>LocalURIreferenceswithinancestor's'defs'element.</desc>

<defs>

<linearGradientid="Gradient01">

<stopoffset="20%"stop-color="#39F"/>

<stopoffset="90%"stop-color="#F3F"/>

</linearGradient>

</defs>

<rectx="1cm"y="1cm"width="6cm"height="1cm"

fill="url(#Gradient01)"/>

</svg>

图形相关元素的定义可以用use元素链接到文档。例如:

复制代码 代码如下:

<svgwidth="10cm"height="3cm"viewBox="0010030"version="1.1"

xmlns="http://www.w3.org/2000/svg"xmlns:xlink="http://www.w3.org/1999/xlink">

<desc>ExampleUse01-Simplecaseof'use'ona'rect'</desc>

<defs>

<rectid="MyRect"width="60"height="10"/>

</defs>

<rectx=".1"y=".1"width="99.8"height="29.8"

fill="none"stroke="blue"stroke-width=".2"/>

<usex="20"y="10"xlink:href="#MyRect"/>

</svg>

在这里请注意xlink名称空间的使用。尽管大多数查看器没有它也将正确显示这一项,但为了保持一致,xlink名称空间应该在<svg></svg>元素上定义。

引用-use元素

任何svg,symbol,g,单个的图形元素和use元素本质上都可以作为模板对象被use元素引用(例如初始化)。use引用的图形内容会在指定的位置渲染。与image元素不同,use元素不能引用整个文档。

use元素也有x,y,width和height属性,这些属性可以省略,如果不省略的话,会将被引用的图形内容坐标或长度映射到当前的用户坐标空间来。

use元素的作用过程就相当于把被引用的对象深拷贝一份到独立的非公开的DOM树中;这棵树的父节点是use元素。虽然是非公开的DOM节点,但是本质上还是DOM节点,所以被引用对象的所有属性值、动画、事件、CSS的相关设置等都会拷贝多来并都还是会起作用,而且这些节点也会继承use元素和use祖先的相关属性(注意引用元素是深拷贝,这些拷贝过来的元素与原来的元素已经无关系了,所以这里不会继承被引用元素祖先节点的属性),如果这些节点本身有相关(CSS)属性,还会覆盖继承来的属性,这些与普通的DOM节点是一致的,所以对use元素使用"visibility:hidden"时要小心,并不一定会起作用。但是由于这部分节点是非公开的,在DOM操作中,也只能看到use元素,所以也只能操作到use元素。

从视觉效果来看,use元素更像是占位符,渲染完成后的视觉效果就和直接用被引用对象渲染是一样的:

1.use元素引用一个symbol元素

这种情况下,视觉效果就相当于:

(1)把use元素换成g元素;

(2)把use的除x,y,width,height,xlink:href外的属性全部移到g元素;

(3)把use的x,y属性变成translate(x,y),追加到g元素的transform属性最后;

(4)把引用的symbol元素换成svg元素,这个svg元素会显式使用use元素的width和height属性(use元素没有这些属性则是100%);

(5)把引用的symbol元素的图形内容深拷贝到替换的svg中。

2.use元素引用一个svg元素

这种情况下,视觉效果就相当于:

(1)把use元素换成g元素;

(2)把use的除x,y,width,height,xlink:href外的属性全部移到g元素;

(3)把use的x,y属性变成translate(x,y),追加到g元素的transform属性最后;

(4)把引用的svg元素包括内容拷贝过来,这个svg元素会显式使用use元素的width和height属性(use元素没有这些属性则使用原来的值);

3.其他情况

这些情况下的视觉效果就相当于:

(1)把use元素换成g元素;

(2)把use的除x,y,width,height,xlink:href外的属性全部移到g元素;

(3)把use的x,y属性变成translate(x,y),追加到g元素的transform属性最后;

(4)把引用元素拷贝过来;

看下面例子的视觉效果:

复制代码 代码如下:

<svgwidth="10cm"height="3cm"viewBox="0010030"version="1.1"

xmlns="http://www.w3.org/2000/svg"xmlns:xlink="http://www.w3.org/1999/xlink">

<desc>ExampleUse03-'use'witha'transform'attribute</desc>

<defs>

<rectid="MyRect"x="0"y="0"width="60"height="10"/>

</defs>

<rectx=".1"y=".1"width="99.8"height="29.8"

fill="none"stroke="blue"stroke-width=".2"/>

<usexlink:href="#MyRect"

transform="translate(20,2.5)rotate(10)"/>

</svg>

下面的图和上面的图外观是一样的:

复制代码 代码如下:

<svgwidth="10cm"height="3cm"viewBox="0010030"

xmlns="http://www.w3.org/2000/svg"version="1.1">

<desc>ExampleUse03-'use'witha'transform'attribute</desc>

<rectx=".1"y=".1"width="99.8"height="29.8"

fill="none"stroke="blue"stroke-width=".2"/>

<gtransform="translate(20,2.5)rotate(10)">

<rectx="0"y="0"width="60"height="10"/>

</g>

</svg>

html5的SVG元素怎么应用”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!

--结束END--

本文标题: HTML5的SVG元素怎么应用

本文链接: https://lsjlt.com/news/92558.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • HTML5的SVG元素怎么应用
    本篇内容介绍了“HTML5的SVG元素怎么应用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成! 组合-g元...
    99+
    2024-04-02
  • HTML5中SVG元素是怎么重用与引用的
    本篇文章给大家分享的是有关HTML5中SVG元素是怎么重用与引用的,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。 ...
    99+
    2024-04-02
  • HTML5中SVG 蒙板及mask元素介绍与应用是怎样的
    本篇文章给大家分享的是有关HTML5中SVG 蒙板及mask元素介绍与应用是怎样的,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。SVG支持的蒙...
    99+
    2024-04-02
  • HTML中怎么使用SVG与SVG预定义形状元素
    今天小编给大家分享一下HTML中怎么使用SVG与SVG预定义形状元素的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下...
    99+
    2024-04-02
  • 怎么使用HTML5的input元素
    本篇内容介绍了“怎么使用HTML5的input元素”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!表单元素之...
    99+
    2024-04-02
  • html5的canvas元素怎么使用
    这篇文章主要介绍“html5的canvas元素怎么使用”,在日常操作中,相信很多人在html5的canvas元素怎么使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”html...
    99+
    2024-04-02
  • HTML5中SVG的文档结构及相关元素有哪些
    HTML5中SVG的文档结构及相关元素有哪些,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。结构相关的组合和重用元素,这里先对SVG的文档结...
    99+
    2024-04-02
  • HTML5语义化元素怎么用
    这篇文章主要介绍HTML5语义化元素怎么用,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!HTML5语义元素语义学是研究语言中单词和短语的含义。语义元素=具有意义的元素。 语义元素清楚...
    99+
    2024-04-02
  • 怎么使用HTML5图片元素
    本文小编为大家详细介绍“怎么使用HTML5图片元素”,内容详细,步骤清晰,细节处理妥当,希望这篇“怎么使用HTML5图片元素”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。 有时...
    99+
    2024-04-02
  • 怎么使用HTML5视频元素
    本文小编为大家详细介绍“怎么使用HTML5视频元素”,内容详细,步骤清晰,细节处理妥当,希望这篇“怎么使用HTML5视频元素”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。 新引...
    99+
    2024-04-02
  • HTML5文件元素怎么使用
    这篇文章主要介绍“HTML5文件元素怎么使用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“HTML5文件元素怎么使用”文章能帮助大家解决问题。 ...
    99+
    2024-04-02
  • html5新的表单元素怎么使用
    这篇文章主要介绍“html5新的表单元素怎么使用”,在日常操作中,相信很多人在html5新的表单元素怎么使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”html5新的表单元...
    99+
    2024-04-02
  • html5的svg是什么及怎么用
    这篇文章主要介绍“html5的svg是什么及怎么用”,在日常操作中,相信很多人在html5的svg是什么及怎么用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”html5的sv...
    99+
    2024-04-02
  • 怎么在IE中使用HTML5元素
    这篇文章主要介绍“怎么在IE中使用HTML5元素”,在日常操作中,相信很多人在怎么在IE中使用HTML5元素问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么在IE中使用HT...
    99+
    2024-04-02
  • html5中输出元素怎么使用
    本篇内容介绍了“html5中输出元素怎么使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成! ...
    99+
    2024-04-02
  • SVG怎么在HTML5中使用
    这期内容当中小编将会给大家带来有关SVG怎么在HTML5中使用,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。SVG的优势:SVG 可被非常多的工具读取和修改(比如记事本)SVG 与 JPEG 和 GIF ...
    99+
    2023-06-09
  • HTML5怎么内联SVG
    今天小编给大家分享一下HTML5怎么内联SVG的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧...
    99+
    2024-04-02
  • 怎么使用HTML5的文本语义元素
    本篇内容主要讲解“怎么使用HTML5的文本语义元素”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么使用HTML5的文本语义元素”吧!文本语义元素 -...
    99+
    2024-04-02
  • HTML5中的Article和Section元素怎么使用
    这篇文章主要介绍“HTML5中的Article和Section元素怎么使用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“HTML5中的Article和Section...
    99+
    2024-04-02
  • HTML中使用SVG与SVG预定义形状元素的介绍是怎样的
    这期内容当中小编将会给大家带来有关HTML中使用SVG与SVG预定义形状元素的介绍是怎样的,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。 S...
    99+
    2024-04-02
软考高级职称资格查询
推荐阅读
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作