我正在编写一些javascript代码,将所有绝对定位的元素向下移动60像素(低于60像素的高度div,我在我的代理上的其他页面的顶部显示)。这是我现在的代码(主要是借用stackoverflow上的另一个问题):
function getStyle(el, prop)
{
var doc = el.ownerDocument;
var view = doc.defaultView;
if (view && view.getComputedStyle)
{
return view.getComputedStyle(el, '')[prop];
}
return el.currentStyle[prop];
}
function runAfterLoad()
{
var all = document.getElementsByTagName('*');
var i = all.length;
while (i--)
{
var topOffset = parseInt(all[i].offsetTop, 10);
if (getStyle(all[i], 'position') === 'absolute')
{
all[i].style.top = isNaN(topOffset) ? '60px' : (topOffset + 60) + 'px';
}
}
}
不幸的是,这会将所有绝对定位元素向下移动60像素。事实证明,我发现绝对定位对浏览器窗口来说实际上并不是绝对的,但对于符合某些特定规则的父级来说绝对定位。以下是另一个答案的引用:
这是有效的,因为“位置:绝对”意味着“使用顶部,右侧,底部,左侧”这样的东西来定位自己与最近的祖先有关的位置:“位置:绝对”或“位置:相对”。“
所以我正在寻找有关如何调整当前代码的帮助,以便只找到绝对位置的元素,这些元素没有父级也是绝对位置或相对位置。任何帮助都非常感谢。
答案 0 :(得分:0)
另一种选择是利用这一事实对您有利。如果您将整个页面打包在div
中,而top: 60px
绝对(或相对)位于60px
,那么您基本上会将整个页面向下移动{{1}}。
这也会移动非绝对元素。如果不需要,那么这将不起作用。