Javascript para modificar todos los elementos con posición absoluta
-
18-09-2019 - |
Pregunta
Efectivamente lo que tengo que hacer en JS es mover todos los elementos con posición absoluta por x píxeles. ¿Es necesario colocar a través de todos los elementos y tratar de averiguar si se trata de una posición absoluta? ¿O hay una manera mejor?
Gracias, Mala
Actualización: específica : Estoy usando un bookmarklet para inyectar JS en cualquier página - por lo tanto no puedo cambiar los archivos de marcado o CSS real de ninguna manera. Este bookmarklet debe, entre otras cosas, mover todos los elementos posicionados absolutamente 155 píxeles hacia abajo.
Solución
Algo así debe hacerlo:
function getStyle(el, prop) {
var doc = el.ownerDocument, view = doc.defaultView;
if (view && view.getComputedStyle) {
return view.getComputedStyle(el, '')[prop];
}
return el.currentStyle[prop];
}
var all = document.getElementsByTagName('*'), i = all.length;
while (i--) {
var topOffset = parseInt(all[i].style.top, 10);
if (getStyle(all[i], 'position') === 'absolute') {
all[i].style.top = isNaN(topOffset) ? '155px' : (topOffset + 155) + 'px';
}
}
Otros consejos
Se puede etiquetar todos los elementos con posición absoluta con un nombre de clase específica y utilizar el getElementsByClassName
en la mayoría de los navegadores . Aparte de eso, de enlace es la única opción.
un solución de Phoenix JQuery-IFED:
var nodes = document.getElementsByTagName("*");
node.foreach(function(n){ // can use foreach since this is FF only
if(n.style.position=="absolute"){
n.style.top += parseInt(n.style.top || 0, 10) +"px";
}
}
No es la position: fixed
declaración CSS - que puede hacer lo que quiera ...