0

我正在编写一些 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 像素。事实证明,我发现绝对定位实际上并不是浏览器窗口的绝对定位,而是满足某些特定规则的父级的绝对定位。这是这里另一个答案的引用:

这是因为“位置:绝对”的意思是“使用上、右、下、左”来定位自己相对于最近的具有“位置:绝对”或“位置:相对”的祖先。

因此,我正在寻求有关如何调整当前代码以仅查找具有绝对位置且没有父级也是绝对或相对定位的元素的帮助。非常感谢任何帮助。

4

1 回答 1

0

另一种选择是利用这一事实对你有利。如果您要将整个页面包装在div绝对(或相对)定位的 中top: 60px,您实际上会立即将整个页面向下移动60px

这也会移动非绝对元素。如果不希望这样做,那么这将不起作用。

于 2013-04-10T20:20:04.263 回答