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.

¿Fue útil?

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 ...

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top