SVG.js探测器

By id

SVG.get()

returns SVG.Element(或的最相关子类SVG.Element

如果要按其ID获取SVG.js创建的元素,可以使用以下SVG.get()方法:

var element = SVG.get('my_element')

element.fill('#f06')

使用CSS选择器

SVG.select()

returns SVG.Set

这将搜索文档中的所有svg元素,并在的实例中返回它们SVG.Set

var elements = SVG.select('rect.my-class').fill('#f06')

此外,可以传递第二个参数来定义要在其中搜索的父元素:

var elements = SVG.select('rect.my-class', group).fill('#f06')

element.select()

returns SVG.Set

SVG.select()相似,也可以在子元素中选择元素:

var elements = group.select('rect.my-class').fill('#f06')

从继承的所有父类都可以使用此方法SVG.Parent

现有的DOM元素

SVG.adopt()

returns SVG.Element

如果希望SVG.js采用现有的DOM元素,则可以使用以下SVG.adopt()方法:

var polygon = document.createElement('polygon')

var element = SVG.adopt(polygon)

element.fill('#f06')

使用jQuery或Zepto

另一种方法是使用jQueryZepto。这是一个例子:

// add elements
var draw   = SVG('drawing')
var group  = draw.group().addClass('my-group')
var rect   = group.rect(100,100).addClass('my-element')
var circle = group.circle(100).addClass('my-element').move(100, 100)

// get elements in group
var elements = $('#drawing g.my-group .my-element').each(function() {
  this.instance.animate().fill('#f09')
})

循环参考

SVG.js中的每个元素实例都有一个对real的引用node

node 节点

returns SVGElement

element.node

native()

returns SVGElement

element.node

instance 实例

returns SVG.Element

类似地,node带有对SVG.js的引用instance

node.instance

注意返回值的差异。
node引用原生SVGElementinstance引用的SVG.Element实例。

Child references 子引用

children()

returns array

可以使用以下children方法检索所有子级的数组:

draw.children()

clear()

returns itself

要从父元素中删除所有元素:

draw.clear()

each()

returns itself

each()让您遍历父元素的所有孩子:

draw.each(function(i, children) {
  this.fill({ color: '#f06' })
})

通过将true作为第二个参数传递,也可以进行深度遍历:

// draw.each(block, deep)
draw.each(function(i, children) {
  this.fill({ color: '#f06' })
}, true)

注意this是指当前的子元素。

first()

returns SVG.Element

要获取父元素的第一个子项:

draw.first()

get()

returns SVG.Element

获取子数组中给定位置的元素:

var rect   = draw.rect(20, 30)
var circle = draw.circle(50)

draw.get(0) //-> returns rect
draw.get(1) //-> returns circle

has()

returns boolean

检查父元素中元素的存在:

var rect  = draw.rect(100, 50)
var group = draw.group()

draw.has(rect)  //-> returns true
group.has(rect) //-> returns false

index()

returns number

返回给定元素的索引,如果不是子元素,则返回-1:

var rect  = draw.rect(100, 50)
var group = draw.group()

draw.index(rect)  //-> returns 0
group.index(rect) //-> returns -1

last()

returns SVG.Element

要获取父元素的最后一个子元素,请执行以下操作:

draw.last()

Parent references 父引用

每个元素都使用方法引用其父元素parent()

doc()

returns SVG.Doc

要获取根SVG,可以使用 doc()

var draw = SVG('drawing')
var rect = draw.rect(100, 100)

rect.doc() //-> returns draw

svg文档中的 parent()

returns SVG.Element

element.parent()

或者,可以将类或css选择器作为第一个参数传递:

var draw   = SVG('drawing')
var nested = draw.nested().addClass('test')
var group  = nested.group()
var rect   = group.rect(100, 100)

rect.parent()           //-> returns group
rect.parent(SVG.Doc)    //-> returns draw
rect.parent(SVG.Nested) //-> returns nested
rect.parent(SVG.G)      //-> returns group
rect.parent('.test')    //-> returns nested

最顶层的svg文档上的 parent()

returns HTMLNode

var draw = SVG('drawing')

draw.parent() //-> returns the wrappig html element with id 'drawing'

parents() 父项

returns array

获取按类型或CSS选择器过滤的元素的所有祖先(请参见parent()方法)

var group1 = draw.group().addClass('test')
  , group2 = group1.group()
  , rect   = group2.rect(100,100)

rect.parents()        // returns [group1, group2, draw]
rect.parents('.test') // returns [group1]
rect.parents(SVG.G)   // returns [group1, group2]

URI参考

如果一个元素通过属性链接到另一个元素,则可以使用该reference()方法来获取链接的元素实例。

reference()

returns SVG.Element

唯一需要的是属性名称:

use.reference('href') //-> returns used element instance
// or
rect.reference('fill') //-> returns gradient or pattern instance for example
// or
circle.reference('clip-path') //-> returns clip instance
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 父类 SVG.Parent SVG.Parent是所有可以包含其他元素的元素的基本包装。SVG.Parent直接从...
    光速小麋鹿阅读 3,345评论 0 0
  • 一、基本数据类型 注释 单行注释:// 区域注释:/* */ 文档注释:/** */ 数值 对于byte类型而言...
    龙猫小爷阅读 9,712评论 0 16
  • 这是16年5月份编辑的一份比较杂乱适合自己观看的学习记录文档,今天18年5月份再次想写文章,发现简书还为我保存起的...
    Jenaral阅读 7,947评论 2 9
  • Data Visualization with D3 D3: SVG中的jQurey 1. Add Documen...
    王策北阅读 4,134评论 0 2
  • 前端开发面试题 面试题目: 根据你的等级和职位的变化,入门级到专家级,广度和深度都会有所增加。 题目类型: 理论知...
    怡宝丶阅读 7,380评论 0 7