Donne-moi le 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);
Au sein de Raphaël en particulier, c'est même plus facile en utilisant toBack()
et toFront()
:
raphElement.toBack() // Move this element below/behind all others
raphElement.toFront() // Move this element above/in front of all others
Détails
SVG utilise un "peintres"de modèle lors de l'élaboration des objets: les objets qui apparaissent plus tard dans le document sont tirées après (sur le dessus) des éléments qui apparaissent plus tôt dans le document. Pour modifier l'ordre d'apparition des éléments, vous devez réorganiser les éléments dans le DOM, à l'aide de appendChild
ou insertBefore
ou similaires.
Vous pouvez en voir un exemple ici: http://phrogz.net/SVG/drag_under_transformation.xhtml
- Faites glisser le rouge et le bleu des objets de sorte qu'ils se chevauchent.
- Cliquez sur chaque objet et de le regarder pop vers le haut. (Les cercles jaunes sont destinés à être toujours visible, cependant.)
La réorganisation des éléments sur cet exemple est fait par les lignes 93/94 du code source:
el.addEventListener('mousedown',function(e){
el.parentNode.appendChild(el); // move to top
...
},false);
Lorsque la souris est poussé vers le bas sur un élément, il est déplacé à être le dernier élément de l'ensemble de ses frères et sœurs, à l'origine pour dessiner dernier, "au dessus" de tous les autres.