`
jacally
  • 浏览: 770124 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

SVG 入门教程(二) 定义和组

    博客分类:
  • SVG
XML 
阅读更多


定义可重用部件 <nobr>第 1 页(共5 页)</nobr>


通常在 SVG 图像的构建中,各部分或者是可重用的,或者不便于在图像主体内定义。在这些情况下,通常方便的做法是在文档的定义部分内(作为 元素的一部分)通过给这些部分指定以后可在图像主体中调用的标识来创建它们。

例如,在前面一页中显示的图像有两只眼睛,每只眼睛边缘有一个眼镜镜片。这个文档可以在定义部分中定义一个镜片,然后在文档中调用它两次,而不是创建这个镜片两次(如下一页所示)。类似地,眼睛本身可以包含渐变(gradient),也应该定义这个渐变供以后引用。(在渐变中有更详细的介绍。) 

xml 代码
  1. <!---->xml version="1.0"?>  
  2. <!---->
  3.   "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">  
  4. <svg width="400" height="200" xmlns="http://www.w3.org/2000/svg">  
  5.      
  6.   <desc>Referenced itemsdesc>  
  7.   <defs>  
  8.   
  9.     <polygon id="lens" points="65,50 185,50 185,75, 150,100    
  10.                                           100,100 65,75"   
  11.              fill="none" stroke="purple" stroke-width="4"/>  
  12.         
  13.      <radialGradient id="irisGradient">  
  14.         <stop offset="25%" stop-color="green" />  
  15.         <stop offset="100%" stop-color="dodgerblue" />  
  16.      radialGradient>  
  17.   
  18.   defs>  
  19.      
  20.   <g>  
  21. . . .               
  22.   
  23.   

 


将定义的项作为属性使用 <nobr>第 2 页(共5 页)</nobr>


如前一页中定义的多边形和渐变,预定义项的实际用法通常有两种形式。

在这两种形式下,定义的项都通过其本地 URL(或 URI)引用。象 HTML 页面一样,id 属性创建了文档中的一个引用点。举例说来,这意味着 URI #irisGradient 引用标识为 irisGradient 的文档部分(或渐变定义)。即:可以从圆元素的 fill 属性内部引用它。

xml 代码
  1. <circle cx="125" cy="50" r="25" fill="url(#irisGradient)"/>  

请注意 url() 函数的使用。

最终代码在本节最后一页显示。请注意渐变现在用于眼睛的虹膜:

 

将定义的项作为元素使用 <nobr>第 3 页(共5 页)</nobr>


引用预定义项的第二种方法是通过用 元素将它们链接到文档。例如:

xml 代码
  1. <use xlink:href="#lens" />  

使用定义中提供的坐标将多边形放置在页面上。

在这里有两个重要事项要强调。首先,请注意 xlink 名称空间的使用。尽管大多数查看器没有它也将正确显示这一项,但为了保持一致,xlink 名称空间应该在 元素上定义,如下一页所示。

其次,请注意 元素在以这种方式使用时成为了一个可以拥有自己坐标系统的容器。坐标系统在坐标系统和初始观察口(viewport) 一节中讨论,不过您可以看到一个具体的示例:第二个镜片最初用初始坐标 (190, 50) 创建,也就是相对第一个镜片偏移 125 个像素。而元素

xml 代码
  1. <use xlink:href="#lens" x="125"/>  

在其原始位置创建第二个镜片,因为它相对于它的“容器”偏移了 125 像素。

编组元素 <nobr>第 4 页(共5 页)</nobr>


最后,SVG 不仅仅可以定义单个元素,这一点或许可以从前面讨论的 <radialgradient></radialgradient>元素猜测出来。

为兼顾可读性和方便性,将元素安排在一组中通常是个好办法。针对这一目的,SVG 提供 元素,它创建一个可以将元素置于其中的容器。这个容器可以用来标识元素,或提供一个公共属性(本地定义的属性将会覆盖公共属性)。例如代码

xml 代码
  1. . . .   
  2.     <g stroke="red" stroke-width="3">  
  3.       <ellipse cx="125" cy="50" rx="50" ry="25"    
  4.                            fill="none" stroke="black" />  
  5.       <circle cx="125" cy="50" r="25" fill="url(#irisGradient)" />  
  6.       <circle cx="125" cy="50" r="10" fill="black" />  
  7.     g>  
  8. . . .   

创建一个所有笔划都是 3 个像素宽的眼睛(因为没有元素定义笔划宽度),而除了外边框笔划外所有笔划都是红色(因为椭圆定义了笔划颜色)。

 

组成整体 <nobr>第 5 页(共5 页)</nobr>


最终的文档显示各部分是如何添加的:

xml 代码
  1. <!---->xml version="1.0"?>  
  2. <!---->
  3.   "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">  
  4. <svg width="400" height="200" xmlns="http://www.w3.org/2000/svg"  
  5.                       xmlns:xlink="http://www.w3.org/1999/xlink">  
  6.      
  7.   <desc>Reusing itemsdesc>  
  8.   <defs>  
  9.   
  10.      <polygon id="lens" points="65,50 185,50 185,75, 150,100    
  11.                                           100,100 65,75"   
  12.              fill="none" stroke="purple" stroke-width="4"/>  
  13.         
  14.      <radialGradient id="irisGradient">  
  15.         <stop offset="25%" stop-color="green" />  
  16.         <stop offset="100%" stop-color="dodgerblue" />  
  17.      radialGradient>  
  18.         
  19.      <g id="eye">  
  20.         <ellipse cy="50" rx="50" ry="25"    
  21.                            fill="none" stroke="black"/>  
  22.         <circle cy="50" r="25"/>  
  23.         <circle cy="50" r="10" fill="black"/>  
  24.      g>  
  25.   
  26.   defs>  
  27.      
  28.   <g>  
  29.   
  30.     <use xlink:href="#eye" x="125" fill="url(#irisGradient)"/>  
  31.     <use xlink:href="#eye" x="250" fill="dodgerblue"/>         
  32.          
  33.     <use xlink:href="#lens"/>  
  34.     <use xlink:href="#lens" x="125"/>  
  35.                     
  36.     <line x1="65" y1="50" x2="310" y2="50"    
  37.                           stroke="plum" stroke-width="2"/>               
  38.   
  39.   g>  
  40. svg>  

请注意可重用元素也允许每次使用不同的属性值,正如上面虹膜的例子中的填充属性所示。

分享到:
评论

相关推荐

    SVG经典教程1 (SVG从入门到精通)

    这个“SVG经典教程1 (SVG从入门到精通)”上册,作为初级教程,旨在帮助读者快速掌握SVG的基本概念和实践技巧。 教程可能涵盖以下关键知识点: 1. SVG基础知识:解释SVG的定义,以及与位图(如JPEG或PNG)的区别。...

    SVG经典教程2 (SVG从入门到精通)

    本教程“SVG经典教程2”是SVG学习的初级教程,旨在帮助初学者深入理解并掌握SVG的核心概念和实用技巧。 ### 1. SVG的基本概念 SVG图像由一系列几何形状组成,如线条、矩形、圆形、曲线等,这些形状在放大或缩小时仍...

    SVG 入门教程(三) 绘制

    这篇“SVG入门教程(三) 绘制”显然是系列教程的一部分,旨在帮助初学者掌握如何使用SVG进行图形绘制。在本教程中,我们将深入探讨SVG的基本绘图元素和方法。 SVG的优势在于其矢量特性,这意味着无论放大多少倍,...

    SVG 入门教程(一) 基本形状

    这篇"SVG入门教程(一) 基本形状"将引导我们走进SVG的世界,了解如何创建和操作SVG的基本图形。 首先,SVG图像由一系列几何形状构建,包括直线、曲线、圆形、椭圆、矩形、多边形和路径等。在SVG中,这些基本形状通过...

    SVG经典入门(SVG应用指南) 完整带目录

    SVG,全称为Scalable Vector Graphics,即可缩放矢量图形,是一种基于XML标准的图像格式,用于描述二维矢量图形。SVG格式属于矢量图形的标准,具备了矢量图的所有特点,如无限放大缩小不失真、基于路径而非像素的...

    svg入门pdf文档

    ### SVG入门PDF文档知识点梳理 #### 一、SVG简介 - **定义**:SVG(Scalable Vector Graphics)是一种基于XML的语言,用于描述二维矢量图形。它由W3C组织制定并维护,当前版本为1.1。 - **特点**: - 可缩放性:...

    svg图像入门教程1

    【SVG图像入门教程1】 SVG,全称可缩放矢量图,是一种基于XML的图像格式,用于描述二维图形和图像。SVG图像的核心优势在于其矢量特性,意味着无论图像被放大多少倍,都能保持清晰无失真。这是因为SVG不是通过像素来...

    svg初级教程(入门)

    作为一个初级教程,它旨在帮助初学者理解和掌握SVG的基本概念和使用方法,通过实例教学,使得学习过程更加直观和易懂。 教程的内容通常会涵盖以下几个方面: 1. **是否应学习SVG**:对于任何从事前端开发或者图形...

    经典svg教程

    SVG,全称Scalable Vector Graphics,是一种基于XML的二维矢量图形标准,由W3C组织制定。SVG图像以其清晰的分辨率无关性和可伸缩性著称,适合在不同分辨率和尺寸的设备上显示,无论是手机、平板还是大屏幕显示器,都...

    svg经典入门书籍.pdf

    每个元素都有特定的属性,例如`width`、`height`、`fill`和`stroke`,用于定义形状的外观和尺寸。通过组合这些元素和调整其属性,可以创建出复杂的图形。 SVG支持动画,这使得SVG图像不仅静态,还可以动态交互。...

    SVG教程中文版

    SVG入门实例通常从学习基本的SVG元素开始。SVG的基本形状元素包括矩形()、圆形()、椭圆()、线条()、折线()、多边形()和路径()。这些元素各自拥有独特的属性,用于定义形状的细节,如尺寸、位置、颜色...

    用于vue引入SVG入门的学习材料

    你可以定义一个接受props的SVG组件,根据props动态改变SVG的属性。 7. **SVG性能优化**:考虑使用`aria-hidden`属性隐藏SVG的辅助文本,提高可访问性;使用`viewBox`属性控制图形的视口,以适应不同尺寸的设备;...

    SVG入门资料

    在SVG-master这个压缩包中,很可能包含了SVG的基本示例代码、教程文档或练习项目,通过学习这些内容,你可以深入理解SVG的工作原理,并掌握创建和编辑SVG图形的技能。无论是前端开发、UI设计还是数据可视化,SVG都是...

    SVG经典入门

    在《SVG经典入门》这本书中,你可能会学到如何创建和修改SVG元素,理解SVG的基本语法,学习如何利用SVG进行图形设计,以及掌握SVG在网页和其他应用场景中的实践技巧。这本书可能还会涵盖SVG与HTML、CSS、JavaScript...

Global site tag (gtag.js) - Google Analytics