有效的我需要在JS中做的是将所有绝对定位的元素向下移动x像素。我是否需要遍历每个元素并尝试弄清楚它是否绝对定位?或者有更好的方法吗?
谢谢, 马拉
更新: 特定:我正在使用书签将JS注入任何页面 - 因此我无法以任何方式更改标记或实际的css文件。除其他外,此书签应该将所有绝对定位的元素向下移动155个像素。
答案 0 :(得分:2)
您可以使用特定的类名标记所有绝对定位的元素,并使用most browsers中的getElementsByClassName
。除此之外,循环是唯一的选择。
答案 1 :(得分: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';
}
}
答案 2 :(得分:1)
凤凰的解决方案没有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";
}
}
答案 3 :(得分:0)
CSS语句position: fixed
- 可能会做你想要的......