3

事実上、JS で行う必要があるのは、絶対に配置されたすべての要素を x ピクセル分下に移動することです。すべての要素をループして、絶対に配置されているかどうかを確認する必要がありますか? それとももっと良い方法がありますか?

ありがとう、マラ

更新: 特定: ブックマークレットを使用して任意のページに JS を挿入しているため、マークアップや実際の css ファイルを変更することはできません。このブックマークレットは、とりわけ、絶対位置にあるすべての要素を 155 ピクセル下に移動する必要があります。

4

4 に答える 4

2

すべての絶対配置要素に特定のクラス名でタグを付けgetElementsByClassNameほとんどのブラウザで を使用できます。それ以外は、ループが唯一のオプションです。

于 2009-08-17T09:54:44.180 に答える
2

このような何かがそれを行う必要があります:

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';
  }
}
于 2009-08-17T12:35:48.820 に答える
1

フェニックスのソリューション 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";
    }
}
于 2009-08-17T12:33:08.120 に答える
0

CSSステートメントがありposition: fixedます-それはあなたが望むことをするかもしれません...

于 2009-08-17T09:47:50.213 に答える