Domanda

Effettivamente quello che devo fare in JS è spostare tutti gli elementi posizionati in modo assoluto dalla x pixel. Ho bisogno di un ciclo tra ogni elemento e cercare di capire se è posizionato assolutamente? O c'è un modo migliore?

Grazie, Mala

Aggiornamento: specifica : Sto usando un bookmarklet per iniettare JS su qualsiasi pagina - quindi non posso modificare i file di markup o CSS effettivo in alcun modo. Questo bookmarklet dovrebbe, tra le altre cose, spostare tutti gli elementi posizionati in modo assoluto di 155 pixel verso il basso.

È stato utile?

Soluzione

Qualcosa del genere dovrebbe farlo:

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

Altri suggerimenti

Si potrebbe contrassegnare tutti gli elementi posizionati in modo assoluto con un nome di classe specifica e utilizzare il getElementsByClassName in maggior parte dei browser . Oltre a questo, il ciclo è l'unica opzione.

soluzione delle Nazioni Unite di 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";
    }
}

C'è la position: fixed dichiarazione CSS - che potrebbe fare quello che vuoi ...

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top