標籤:style blog class code c color
---恢複內容開始---
jquery定位函數:offset,position,scrollTop/scrollLeft
(1)offset:擷取當前元素相對於文檔的位移。只對可見元素有效。
(2) position:擷取元素相對於最近的一個position為relative or absolute的元素的祖父節點的相對位移。
(3)scrollTop()/scrollLeft()是分別擷取元素捲軸距頂端的距離。
$(selector).offset()與$(selector).position()都返回包含top、left屬性的對象 top/left的值為number
scrollTop() /scrollLeft()的傳回值也為number類型 scroll()返回該對象本身
參考例子
測試代碼:
<body height="1500px"> <div style="position:relative;margin-top:1000px;height:300px;border:1px solid #0C6;"> <p style="margin:50px;">compute my height</p> </div> </body> |
在firebug中得到的結果為:
$(‘div‘).offset() top:1000;left:8; //瀏覽器預設body 與視窗margin 為8px $(‘p‘).offset() top:1051;left:9; $(‘div‘).scrollTop()=0;$(‘div‘).scrollLeft()=0; |
$(‘p‘).position();<br>top:0 ;left:0; |
這個結果感覺很奇怪,第一二個結果還是意料之中,但是第三個是將捲軸拉到最下方的時算出的結果。
奇怪的事情出現了。
<body style="height:1500px;"> <div style="position:relative;margin-top:1000px;height:300px;"> <p style="padding:50px;">compute my height</p> </div> </body> |
$(‘div‘).offset() top:1000;left:8; $(‘p‘).offset() top:1000;left:8; $(‘div‘).scrollTop()=0;$(‘div‘).scrollLeft()=0; |
$(‘p‘).position();<br>top:0 ;left:0; |
padding不起作用了!!! 盒子模型 左至右 margin-left |border-left padding-left width padding-right|border-right margin-right
而offset()position() 讀取的值是margin-left(margin-top)+border-left(border-top) padding不在其內
繼續做修改:
<body style="height:1500px;"> <div style="position:relative;margin-top:1000px;height:300px;border:1px solid #666;"> <p style="padding:50px;">compute my height</p> </div> </body> |
$(‘div‘).offset()<br>top:1000;left:8;<br> $(‘p‘).offset()<br> top:1017;left:9; <br> //div>p會產生8px的margin $(‘div‘).scrollTop()=0;<br>$(‘div‘).scrollLeft()=0;<br> $(‘p‘).position();<br>top:0 ;left:0; |
****行內元素會預設1px間隔
---恢複內容結束---