jquery.offset()方法的非常奇怪的行为

时间:2012-11-22 13:21:11

标签: javascript html

完成后

$view.offset({
   left : X, //X is the same each time
   top : this.y
});
console.log($view.offset()); //outputs what it should

对于几个对象。我看到(在萤火虫中)以下的HTML代码

<div id="4017" class="text-block" style="position: relative; top: 2px; left: 22px;">
<div id="4043" class="text-block" style="position: relative; top: 41px; left: -64px;">
<div id="4053" class="text-block" style="position: relative; top: 80px; left: -95px;">
<div id="4081" class="text-block" style="position: relative; top: 119px; left: -135px;">

left对于所有div应该是相同的(并且如果left对于每个div都相同,则显示它)。为什么left对于每个div都不相同,尽管它显示为left对所有div都相同?

在CSS中我有:

div.text-block {
   display: inline-block;
}

提前谢谢!

UPD: div位于其他三个div:

<div id="app-container">
    <div id="canvas-container">
        <div id="canvas">
            <!-- divs are located here -->
        </div>
     </div>
</div>

在各自的CSS中我有:

#canvas {
  position: absolute;
  background-color: white;
  width: 100%;
  height: 100%;
}

#app-container {
  height: auto !important;
  min-height: 100%;
}

#canvas-container {
  position: absolute;
  width: 100%;
  height: 100%;
  overflow: hidden;
}

1 个答案:

答案 0 :(得分:1)

jQuery documentation所述,

  

.offset(坐标)

  描述:设置相对于文档的匹配元素集中每个元素的当前坐标。

因此,如果您的元素位于相对于文档位于位置(0,0)的其他元素中,则会应用偏移量。


编辑

具有相同左值的相对定位的内联元素:

Demo picture