Container Elements
SVG.Container
The SVG.Container class is the base wrapper for all elements that can contain other elements.
The inheritance stack is: SVG.Base > SVG.EventTarget > SVG.Dom > SVG.Element > SVG.Container.
SVG.Svg
The main SVG.js initializer function creates a root svg node in the given element and returns an instance of SVG.Svg.
SVG() constructor
returns SVG.Svg which inherits from SVG.Container
var draw = SVG().addTo('#drawing')
Note: The first time SVG() is called, a second, invisible <svg> will be created. This is our parser as explained in the FAQ.
An SVG document can also be created inside another SVG document. It is then called a nested SVG document:
nested() constructor
constructor on SVG.Container
returns SVG.Svg which inherits from SVG.Container
var nested = draw.nested()
var rect = nested.rect(200, 200)
SVG.G
Grouping elements can be useful if you want to transform a set of elements as if it were one. All element within a group, maintain their position relative to the group they belong to.
Note: Groups do not have a geometry of their own, it's inherited from their content. Therefore groups do not listen to x, y, width and height attributes. If that is what you are looking for, use a nested() svg instead.
group() constructor
constructor on SVG.Container
returns SVG.G which inherits from SVG.Container
A group has all the same element methods as the root SVG document:
var group = draw.group()
group.path('M10,20L30,40')
Existing elements from the SVG document can also be added to a group:
group.add(rect)
SVG.Symbol
constructor on SVG.Container
returns SVG.Symbol which inherits from SVG.Container
Not unlike the group element, the symbol element is a container element. The only difference between symbols and groups is that symbols are not rendered. Therefore a symbol element is ideal in combination with the use element:
var symbol = draw.symbol()
symbol.rect(100, 100).fill('#f09')
var use = draw.use(symbol).move(200, 200)
SVG.Defs
The <defs> element is a container for referenced elements. Descendants of a <defs> node are not rendered directly. The <defs> node lives in the main <svg> document and can be accessed with the defs() method.
defs() constructor
constructor on SVG.Container
returns SVG.Defs which inherits from SVG.Container
var defs = draw.defs()
The defs are also available on any other element through the root() method:
var defs = rect.root().defs()
The defs node works exactly the same as groups.
SVG.A
Create a hyperlink that will be activated on all child elements.
link() constructor
constructor on SVG.Container
returns SVG.A which inherits from SVG.Container
A hyperlink or <a> tag creates a container that enables a link on all children:
var link = draw.link('http://svgdotjs.github.io/')
var rect = link.rect(100, 100)
The link url can be updated with the to() method:
link.to('http://apple.com')
Furthermore, the link element has a target() method to create the target attribute:
link.target('_blank')
Elements can also be linked the other way around with the linkTo() method:
rect.linkTo('http://svgdotjs.github.io/')
Alternatively, a block can be passed instead of a URL for more options on the link element:
rect.linkTo(function(link) {
link.to('http://svgdotjs.github.io/').target('_blank')
})