2012-11-22 342 views
1

很奇怪jquery.offset()方法的行爲

$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位於iside其他三個的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; 
} 
+0

我們能有您的問題的小提琴,所以我們可以看到更多的代碼 – Bruno

+0

中的「X」的價值正在改變,但我們不能說,除非你發佈更多的代碼 –

回答

1

如圖jQuery documentation所述,

.offset(座標)

描述:設置匹配元素集合中每個元素相對於文檔的當前座標。

因此,如果您的元素位於相對於文檔的位置(0,0)上的其他元素中,則會應用偏移量。


編輯

與上相同的左值相對定位內聯元素:

Demo picture

+0

謝謝!我已經更新了這個問題,也許這可以幫助你理解這是什麼 – Eugeny89

+0

是的,因爲你的'div'被聲明爲'inline-block',並且相對定位,所以你的原點被移動到一個塊的末尾已經佔用了你之前的塊的長度。我知道這並不是很清楚,但我添加了一張圖片,我已經強制將所有「left」位置設置爲相同的值... –

+1

順便說一句,如果您想要在代碼中擁有相同的左側位置,您可以寫:'$ view.css({position:「relative」,left:X,top:this.y});'... –