相关疑难解决方法(0)

什么会使offsetParent null?

我试图在JavaScript中进行定位.我正在使用基于经典quirksmode函数的累积位置函数,该函数对每个函数求和offsetTop,直到顶部节点.offsetLeftoffsetParent

但是,我遇到了一个问题,我感兴趣的元素offsetParent在Firefox 中没有.在IE中offsetParent存在,但是offsetTop并且offsetLeft总计为0,因此它与Firefox中的效果相同.

什么会导致在屏幕上清晰可见和可用的元素没有offsetParent?或者,更实际的是,我如何找到该元素的位置以便在其下方放置下拉?

编辑:这是如何重现这个特定的一个实例(没有通过当前接受的答案解决):

  1. 打开Stack Overflow主页.
  2. 在Web浏览器的控制台中运行以下代码(例如Chromev21):

    var e = document.querySelector('div');
    console.log(e);
    // <div id="notify-container"></div>
    do{
      var s = getComputedStyle(e);
      console.log(e.tagName,s.display,s.visibility,s.position,e.offsetParent);
    } while(e=e.parentElement)
    // DIV block visible fixed null
    // BODY block visible static null
    // HTML block visible static null
    
    Run Code Online (Sandbox Code Playgroud)

为什么offsetParent那个元素null

html javascript positioning

13
推荐指数
3
解决办法
2万
查看次数

jQuery中的offsetParent()没有返回预期的相对位置祖先

我有一些HTML具有以下近似结构和定位:

<div class="grand-parent" style="position: absolute">
  <div class="parent" style="position: relative">
    <div class="child"></div>
  </div>
</div>
Run Code Online (Sandbox Code Playgroud)

在我的jQuery小部件中,我正在尝试插入位于小部件所针对的元素的"偏移父级"内的元素.为此,我基本上有这样的代码:

var targetElement = $('.child');
$('<div/>').appendTo(targetElement.offsetParent());
Run Code Online (Sandbox Code Playgroud)

不幸的是,该元素似乎是作为孩子插入.grand-parent而不是parent.我对offsetParent()(以及文档似乎支持这一点)的理解是offsetParent()应该返回,.parent因为它是相对的.我对offsetParent的理解是不正确的,还是jQuery存在问题(我使用的是1.4.1).

javascript jquery positioning offset

4
推荐指数
1
解决办法
2536
查看次数

标签 统计

javascript ×2

positioning ×2

html ×1

jquery ×1

offset ×1