有效地,我需要在JS中做的是將所有絕對定位的元素向下移動x個像素。我是否需要遍歷每個元素並試圖弄清楚它是否完全定位?或者,還有更好的方法?JavaScript修改所有絕對定位的元素
感謝, 麻辣
更新:具體:我使用的是書籤注入JS到任何頁面 - 因此,我不能以任何方式更改標記或實際的CSS文件。除此之外,這個小書籤應該將所有絕對定位的元素向下移動155個像素。
有效地,我需要在JS中做的是將所有絕對定位的元素向下移動x個像素。我是否需要遍歷每個元素並試圖弄清楚它是否完全定位?或者,還有更好的方法?JavaScript修改所有絕對定位的元素
感謝, 麻辣
更新:具體:我使用的是書籤注入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';
}
}
你可以標記與特定的類名都絕對定位的元素和most browsers使用getElementsByClassName
。除此之外,循環是唯一的選擇。
鳳凰的解決方案未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";
}
}
什麼是您的具體要求是什麼? – rahul 2009-08-17 09:48:39
你爲什麼想這樣做? – rahul 2009-08-17 09:49:44
[更新的問題更具體] – Mala 2009-08-17 10:02:18