Frage

Effektiv was muss ich in JS zu tun ist, alle absolut positionierten Elemente bewegen sich durch x Pixel nach unten. Muss ich durch jedes Element in einer Schleife und versuchen, herauszufinden, ob es absolut positioniert ist? Oder gibt es einen besseren Weg?

Danke, Mala

Update: spezifische : Ich habe eine Bookmarklet bin mit JS auf jeder Seite zu injizieren - so kann ich nicht die Markup oder tatsächlichen CSS-Dateien in irgendeiner Weise ändern. Das Bookmarklet sollte, unter anderem, bewegen sich alle absolut positionierten Elemente 155 Pixel nach unten.

War es hilfreich?

Lösung

So etwas sollte es tun:

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

Andere Tipps

Sie können alle absolut positionierten Elemente mit einem bestimmten Klassennamen markieren und die getElementsByClassName verwenden in die meisten Browser . Other than that, Looping ist die einzige Option.

Phoenix-Lösung 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";
    }
}

Es gibt die CSS-Anweisung position: fixed - das könnte das tun, was Sie wollen ...

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top