絶対的に配置されたすべての要素を変更する JavaScript
-
18-09-2019 - |
質問
実際、JS で行う必要があるのは、絶対に配置されたすべての要素を x ピクセル下に移動することです。すべての要素をループして、それが絶対に配置されているかどうかを確認する必要がありますか?それとももっと良い方法があるのでしょうか?
ありがとう、マラ
アップデート: 特定の:ブックマークレットを使用して任意のページに JS を挿入しています。そのため、マークアップや実際の CSS ファイルをいかなる方法でも変更することはできません。このブックマークレットは、特に、絶対的に配置されたすべての要素を 155 ピクセル下に移動する必要があります。
解決
次のようなものがそれを行うはずです:
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';
}
}
他のヒント
絶対に配置されたすべての要素に特定のクラス名をタグ付けし、 getElementsByClassName
で ほとんどのブラウザ. 。それ以外の選択肢はループのみです。
JQuery を前提としたフェニックスのソリューション:
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";
}
}
CSSステートメントがあります position: fixed
- それはあなたが望むことを行うかもしれません...
所属していません StackOverflow