jQuery offset()和position()用法詳解
這兩個方法非常的常用,同時掌握起來有些困難,下面就介紹一下這兩個方法的用法。
下面先看一下它們基本的定義:
1.offset()方法的定義:
此方法獲取或者設定匹配元素在當前document的相對偏移。
此方法只對可見元素有效。
當獲取偏移量時,方法的返回值是一個包含兩個整型屬性(top和left)的物件。
設定偏移量時,此方法的引數是帶有top和left屬性的物件。
具體用法可以參閱jQuery的offset()方法一章節。
2.position()方法的定義:
獲取匹配元素相對父元素的偏移。
返回的物件包含兩個整形屬性(top和left)的物件。
為精確計算結果,請在補白、邊框和填充屬性上使用畫素單位。
此方法只對可見元素有效。
具體用法可以參閱jQuery的position()方法一章節。
但是此方法並非只有定義的那麼簡單,在實際應用中,它的返回值也並非只是獲取匹配元素相對父元素的偏移量。
實際上position()方法是將元素以CSS的絕對定位來處理,也就是position屬性值為absolute(當然並不是將元素的的定位方式真的設定為絕對定位),這個時候它的定位參考物件準確的來說應該是距離它最近的一個擁有定位的父元素,和CSS的絕對定位的原則是一樣的,可以參閱position絕對定位一章節。
程式碼例項如下:
[HTML] 純文字檢視 複製程式碼執行程式碼<!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta name="author" content="http://www.softwhy.com/" /> <title>螞蟻部落</title> <style type="text/css"> body{ margin:15px; width:960px; } .parent{ border:3px solid #ccc; width:600px; height:300px; margin-left:55px; padding:25px; } .child{ background:#666; width:200px; height:200px; color:#fff; } .copyright{ position:absolute; right:0; } </style> <script type="text/javascript" src="mytest/jQuery/jquery-1.8.3.js"></script> <script type="text/javascript"> $(document).ready(function(){ $(".child").each(function(){ var text = "position().left="+$(this).position().left; text +="<br>position().top="+$(this).position().top; text +="<br>offset().left="+$(this).offset().left; text +="<br>offset().top="+$(this).offset().top; text +="<br>其parent的offset().top="+$(this).parents(".parent").offset().top; text +="<br>其parent的offset().left="+$(this).parents(".parent").offset().left; $(this).html(text); }) }) </script> </head> <body> <div class="parent" style="float:right"> 父容器的position是預設值,static。子容器的position為預設值,static。offset和position值相同 <div class="child"></div> </div> <div style="clear:both"></div> <div class="parent" style="position:relative"> 父容器的position是相對定位ralative,子容器的position為預設值static。offset和position值不同 <div class="child"></div> </div> <br/> <div style="position:absolute;padding:15px;border:3px solid #ff0000;"> <div class="parent"> 祖父容器的position是絕對定位absolute,子容器的position為預設值static。offset和position值不同 <div class="child"></div> </div> </div> </body> </html>
最後總結:
1.offset方法獲取的是匹配元素相對於文件的偏移量,和物件本身和父元素的定位方式是無關的。
2.position方法稍稍複雜一些:
(1).如果祖輩元素中有采用絕對定位或者相對定位者,則此方法獲取的偏移量將以最近的採用定位的的祖輩元素為參考。
(2).如果祖輩元素中沒有采用絕對定位或者相對定位者,則此方法獲取的偏移量將以視窗為參考物件。
相關文章
- jquery position()函式和offset()函式的區別jQuery函式
- jQuery 事件用法詳解jQuery事件
- jQuery stop()方法用法詳解jQuery
- jQuery offset()jQuery
- jQuery的bind()方法用法詳解jQuery
- css詳解position五種屬性用法及其含義CSS
- Position定位詳解
- jQuery position()jQuery
- CSS之Position詳解CSS
- jQuery position()方法jQuery
- rowspan和colspan用法詳解
- html中Position屬性值介紹和position屬性四種用法HTML
- sar命令的用法和詳解
- [轉載]CSS之Position詳解CSS
- jQuery map和each用法jQuery
- Java 中 this 和 super 的用法詳解Java
- oracle中的exists和not exists和in用法詳解Oracle
- jQuery.position()方法獲取值為0解決方案jQuery
- jquery.cookie.js用法詳細解析jQueryCookieJS
- jQuery原始碼解析之position()jQuery原始碼
- oracle中的exists 和not exists 用法詳解Oracle
- Linux中&&和&,|和||用法及區別詳解!Linux
- extern用法詳解
- Metasploit用法詳解
- xargs用法詳解
- Nmap用法詳解
- mount用法詳解
- jQuery中的Deferred詳解和使用jQuery
- CSS background position 背景定位的用法CSS
- jquery ajax詳解jQuery
- jquery tmpl 詳解jQuery
- 結構體定義 typedef struct 用法詳解和用法小結結構體Struct
- Java中static變數作用和用法詳解Java變數
- iOS-CALayer中position與anchorPoint詳解iOS
- jQuery中的Deferred-詳解和使用jQuery
- Flutter ListView 用法詳解FlutterView
- MyBatis Generator 用法詳解MyBatis
- iconfont用法詳解