Дай мне код!
// 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);
В Рафаэле, в частности, это еще проще, используя toBack()
и toFront()
:
raphElement.toBack() // Move this element below/behind all others
raphElement.toFront() // Move this element above/in front of all others
Подробности
SVG использует "модель рисования" при рисовании объектов: элементы, которые появляются позже в документе, рисуются после (поверх) элементов, которые появляются ранее в документе,Чтобы изменить наложение элементов, необходимо изменить порядок элементов в DOM, используя appendChild
или insertBefore
или т. П.
Вы можетесм. пример этого здесь: http://phrogz.net/SVG/drag_under_transformation.xhtml
- Перетащите красные и синие объекты так, чтобы они перекрывались.
- Нажмите на каждый объект и наблюдайте, как он всплывает наверх.(Желтые кружки предназначены, чтобы всегда быть видимыми.)
Переупорядочение элементов в этом примере выполняется по строкам 93/94 исходного кода:
el.addEventListener('mousedown',function(e){
el.parentNode.appendChild(el); // move to top
...
},false);
Когда мышь нажимают на элемент, он перемещается, чтобы стать последним элементом всех своих братьев и сестер, заставляя его рисовать последним, «сверху» всех остальных.