0

絶対に配置されたすべての要素を60ピクセル下に移動するJavaScriptコードを書いています(プロキシの他のページの上部に表示している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 に答える