Monday, May 13, 2024
 Popular · Latest · Hot · Upcoming
192
rated 0 times [  199] [ 7]  / answers: 1 / hits: 47988  / 13 Years ago, mon, july 4, 2011, 12:00:00

How can I reorder Raphael or their underlying SVG elements after creation.
Better yet, do something like layers exist in SVG?



Ideally I would like two or more layers in which to place elements at any time; A background and a foreground layer. If that is not an option, popping elements to the front would be ok, and pushing it to the back would be better in this particular case.



Thanks,


More From » svg

 Answers
6

Gimme the Code!



// move element on top of all others within the same grouping
el.parentNode.appendChild(el);

// move element underneath all others within the same grouping
el.parentNode.insertBefore(el,el.parentNode.firstChild);

// move element on top of all others in the entire document
el.ownerSVGElement.appendChild(el);

// move element underneath all others in the entire document
el.ownerSVGElement.appendChild(el,el.ownerSVGElement.firstChild);


Within Raphael specifically, it's even easier by using toBack() and toFront():



raphElement.toBack()  // Move this element below/behind all others
raphElement.toFront() // Move this element above/in front of all others


Details



SVG uses a painters model when drawing objects: items that appear later in the document are drawn after (on top of) elements that appear earlier in the document. To change the layering of items, you must re-order the elements in the DOM, using appendChild or insertBefore or the like.



You can see an example of this here: http://phrogz.net/SVG/drag_under_transformation.xhtml




  1. Drag the red and blue objects so that they overlap.

  2. Click on each object and watch it pop to the top. (The yellow circles are intended to always be visible, however.)



The re-ordering of elements on this example is done by lines 93/94 of the source code:



el.addEventListener('mousedown',function(e){
el.parentNode.appendChild(el); // move to top
...
},false);


When the mouse is pushed down on an element, it is moved to be the last element of all its siblings, causing it to draw last, on top of all others.


[#91371] Friday, July 1, 2011, 13 Years  [reply] [flag answer]
Only authorized users can answer the question. Please sign in first, or register a free account.
sandra

Total Points: 708
Total Questions: 100
Total Answers: 84

Location: Bosnia and Herzegovina
Member since Thu, Jun 24, 2021
3 Years ago
;