jQuery中的offset()方法可以返回一個元素相對于文檔的位置。 在這個方法中,我們可以使用top關鍵字來獲取元素的垂直偏移量。
var offset = $(selector).offset(); //獲取元素的位置信息 var topOffset = offset.top; //獲取元素的垂直偏移量
當調用.offset()方法時,返回的對象包含元素的左側和頂部值。使用.offset()方法獲取相對于文檔頂部和左側的位置并保存在變量中,即可使用.top屬性獲取頂部偏移量。
Offset不僅可以獲取元素的位置,還可以將元素插入到指定位置,比如在頁面某個元素下方插入一個新的元素:
//先獲取目標元素 var target = $('#target'); //創建新的元素 var newElement = $('New Element'); //將新的元素插入到目標元素之后 newElement.insertAfter(target);
然后,我們可以通過offset()方法獲取新元素的垂直位移:
var newElementOffset = newElement.offset().top;
一個常見的用例是當用戶單擊一個鏈接時,頁面滾動到鏈接的目標位置。下面是如何獲得目標位置并觸發頁面滾動的示例:
//獲取目標元素 var target = $(href); //獲取目標元素的垂直偏移量 var targetOffset = target.offset().top; //使用animate方法使頁面滾動到目標位置 $("html, body").animate({scrollTop: targetOffset}, 1000);
需要注意的是,瀏覽器窗口的滾動條位置對.offset()方法返回的位置信息有影響。 當頁面在瀏覽器窗口中被滾動時,.offset()方法將返回元素相對于文檔頂部和左側的位置,而不是相對于瀏覽器窗口的位置。