Question

En effet ce que je dois faire dans JS est de déplacer tous les éléments en position absolue par x pixels. Ai-je besoin de boucle à travers tous les éléments et essayer de savoir s'il est placé tout à fait? Ou est-il une meilleure façon?

Merci, Mala

Mise à jour: spécifique : J'utilise un bookmarklet pour injecter JS sur une page - Je ne peux donc pas modifier les fichiers de balisage ou css réelle de quelque façon. Ce bookmarklet devrait, entre autres, déplacer tous les éléments en position absolue 155 pixels vers le bas.

Était-ce utile?

La solution

Quelque chose comme ça devrait le faire:

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';
  }
}

Autres conseils

Vous pouvez marquer tous les éléments absolument positionnés avec un nom de classe spécifique et utiliser le getElementsByClassName la plupart des navigateurs . Autre que cela, en boucle est la seule option.

solution de phénix un 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";
    }
}

Il y a la déclaration CSS position: fixed - qui pourrait faire ce que vous voulez ...

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top