查找具有绝对位置的所有父元素

时间:2013-04-10 20:16:17

标签: javascript html css-position

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

  

这是有效的,因为“位置:绝对”意味着“使用顶部,右侧,底部,左侧”这样的东西来定位自己与最近的祖先有关的位置:“位置:绝对”或“位置:相对”。“

所以我正在寻找有关如何调整当前代码的帮助,以便只找到绝对位置的元素,这些元素没有父级也是绝对位置或相对位置。任何帮助都非常感谢。

1 个答案:

答案 0 :(得分:0)

另一种选择是利用这一事实对您有利。如果您将整个页面打包在div中,而top: 60px绝对(或相对)位于60px,那么您基本上会将整个页面向下移动{{1}}。

这也会移动非绝对元素。如果不需要,那么这将不起作用。