js中各種寬高令人頭疼,相反董济,jQuery中則精簡了不少步清。
寬、高
jQuery中獲取寬高感局,最經(jīng)典的就是width()和height()尼啡。因為CSS盒子模型的緣故暂衡,元素的寬高分為很多询微。以下以獲取元素的寬為例:
$("div").width(); //內(nèi)容的寬
$("div").innerWidth(); //內(nèi)容的寬 + 左內(nèi)邊距 + 右內(nèi)邊距
$("div").outerWidth(); //內(nèi)容的寬 + 左內(nèi)邊距 + 右內(nèi)邊距 + 左邊框 + 右邊框
$("div").outerWidth(true); //內(nèi)容的寬 + 左內(nèi)邊距 + 右內(nèi)邊距 + 左邊框 + 右邊框 + 左外邊距 + 右外邊距
對于元素的高是同樣的道理崖瞭。
同時需要注意的是,$(window)代表瀏覽器窗口撑毛,通過$(window).height()獲取的是瀏覽器窗口的高书聚,如果調(diào)整瀏覽器的高度,則其值會變藻雌。
$(document)代表HTML文檔雌续,通過$(document).height()獲取的是整個文檔的高,如果調(diào)整瀏覽器的高度胯杭,則其值不會變驯杜。
1.對于$(window)和$(document)來說,他們的width()做个、innerWidth()和outerWidth()的值都是一樣的鸽心。
2.width()和css("width")的區(qū)別在于,后者獲取的值帶有單位
位置
jQuery中居暖,與元素位置相關(guān)的有兩個函數(shù):offset()和position()顽频。
這兩個函數(shù)都返回一個對象,這個對象中含有兩個屬性:left和top太闺。
這兩個函數(shù)不同點在于糯景,offset是元素相對于文檔的位置,而position是元素相對于其含有position屬性的最近祖先元素的位置省骂。
$("div").offset().left; //元素相對于HTML文檔左邊的距離
$("div").position().left; //元素相對于其含有position屬性的最近祖先元素左邊的距離
滾動條
主要有兩個函數(shù)scrollTop()和scrollLeft()蟀淮。
對于普通元素來說,scrollTop()就是該元素滾動上去的距離钞澳,對于$(window)來說灭贷,就是整個網(wǎng)頁滾動上去的距離。
$("div").scrollTop();
$(window).scrollTop();
舉例1 可視區(qū)域加載
當(dāng)頁面滾動到元素所在位置時略贮,再進行一些動作甚疟,比如執(zhí)行動畫,加載圖片逃延。這是怎么實現(xiàn)的呢览妖?
其實很簡單,只要$(window).scrollTop() + $(window).height()的和大于$("div").offset().top就行了揽祥。
$(window).scroll(function(){
var flag = ($(window).scrollTop() + $(window).height()) > $("div").offset().top;
if(flag){
//do something
}
});
舉例2 滾動到底部自動加載
經(jīng)常在網(wǎng)頁中看到讽膏,當(dāng)頁面滾動到底部時,頁面自動加載拄丰,這是怎么實現(xiàn)的呢府树?
其實判斷頁面是否滾動到底部俐末,很簡單,只要$(window).height() + $(window).scrollTop() 的和大于等于 $(document).height()就行了奄侠。
前面已經(jīng)說了卓箫,window和document是不同的,window指的是瀏覽器窗口垄潮,而document指的是HTML文檔烹卒。
$(window).scroll(function(){
var flag = ($(window).height() + $(window).scrollTop()) >=$(document).height();
if(flag){
//加載新數(shù)據(jù)
}
});