Jquery中用offset().top和offsetTop的比較

來源:互聯網
上載者:User

標籤:hot   undefined   scrolltop   window   使用   擷取   函數   位置   int   

今天,想測試一個div與頂部的距離,用的是.offsetTop,但是offsetTop獲得的值,怎麼都列印不出來。折騰了半天,列印的結果都是undefined,雖然網上很多資料都說返回的是數值。雖然這個函數永不了,但是黃顯欽找到了一個可以替代offsetTop的函數。那就是jquery的offset().top

 

我們先來瞭解一下,什麼是offset().top和offsetTop?

 

offsetTop

解析一:

假設 obj 為某個 HTML 控制項。

obj.offsetTop 指 obj 相對於版面或由 offsetParent 屬性指定的父座標的計算上側位置,整型,單位像素。

解析二: 

當前對象到其上級層頂部的距離.

不能對其進行賦值.設定對象到頁面頂部的距離請用style.top屬性.

 

這是從網上找到的兩種解析,您看著用,我也沒搞懂,主要是列印不出offsetTop來。

 

 

如果需要擷取當前元素到document的高度,建議使用jquery的offset().top。下面我們解析一下offset().top。

 offset().top

offset()的top是指元素與document的上邊的距離,而不是瀏覽器當前表單的上邊緣,1。

 圖1:document高度超過window,瀏覽器出現捲軸,滾動捲軸,提交按鈕的offset不變。

 

圖2:document中的div有捲軸,提交按鈕的offset隨div的滾動變化而變化,與document無關

 

從上面這兩個圖,我們就知道jquery的offset.top的用法區別了。

執行個體一:判斷DIV何時出現

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html><head><title>js</title><script src="http://code.jquery.com/jquery-latest.js" type="text/javascript"></script><script type="text/javascript">$(document).ready(function () {$(window).scroll(function () {    var a = document.getElementById("eq").offsetTop;    console.log("offsetTop:",a);    var b = $(window).scrollTop();    var c = $(window).scrollTop()+$(window).height();    console.log("window.scrollTop:",b);    if (c >= a) {        console.log("----",a,c);    }});});</script></head><body><div style="width:1px;height:2000px;"></div><div id="eq" style=" width:100px; height:100px; background-color:Red;">1</div><div style="width:1px;height:2000px;"></div></body></html>

 執行個體二:

類似豆瓣首頁的熱門活動,當滾動到那的時候一直在頂部

//返回頂部        $(‘.toTopShortBtn‘).hide();        var back = $(‘.toTopShortBtn a‘);        back.click(function() {            var timer = setInterval(function(){                $(window).scrollTop($(window).scrollTop()-50);                if($(window).scrollTop() == 0){                    clearInterval(timer);                }            },2);        });        var a = $(".hothuodong").offset().top;        $(window).scroll( function() {            if($(window).scrollTop() > 400){                $(‘.toTopShortBtn‘).show();            }else{                $(‘.toTopShortBtn‘).hide();            }            var b = $(window).scrollTop();            if (b >= a) {                $(".hothuodong").css(‘position‘,‘fixed‘);            }else{                $(".hothuodong").css(‘position‘,‘static‘);            }        });

 

Jquery中用offset().top和offsetTop的比較

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.