在JS中,我需要有效地将所有绝对定位的元素向下移动x像素。我需要循环遍历每个元素并尝试弄清楚它是否被绝对定位吗?还是有更好的方法?
谢谢, Mala
更新:具体而言:我正在使用一个书签脚本将JS注入到任何页面上 - 因此我不能以任何方式更改标记或实际的CSS文件。这个书签脚本应该将所有绝对定位的元素下移155像素,除了其他一些功能。
在JS中,我需要有效地将所有绝对定位的元素向下移动x像素。我需要循环遍历每个元素并尝试弄清楚它是否被绝对定位吗?还是有更好的方法?
谢谢, Mala
更新:具体而言:我正在使用一个书签脚本将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';
}
}
Phoenix的解决方案,不使用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
- 可能会实现你想要的效果...