最近做項目用了到scroll滾動條事件,花了很多時間做搜索,沒有很好的先整理思考后再去搜索,做編碼事件時,沒有事先考慮清楚,理清思路,先做簡單的測試成功后,再完成其他的實現。
1.scroll()事件
當用戶滾動指定的元素時,會發生scroll事件。適用於所有可滾動的元素和window對象(瀏覽器窗口)
$(select).scroll([Data],fn);
當(瀏覽器窗口)頁面滾動條變化時,執行的函數,JQuery代碼:
$(window).scroll(function(){
//do something...
});
2.scrollTop 獲取匹配元素相對滾動條頂部的偏移
scrollTop(val)
獲取頁面滾動條的具體值:$(document).scrollTop();
設置相對滾動條的偏移值:$(document).scrollTop(300);
3.offset() 獲取匹配元素在當前視口的相對偏移。
offset([coordinates])
獲取元素的相對偏移:$(".bg02").offset().top;
設置元素的相對偏移:$(".bg02").offset({"top":1000, "left":0});
4.需求:當(瀏覽器窗口)頁面滾動條值小於300px時隱藏div,大於300px時顯示div
$(window).scroll(function(){
//var ds = document.documetElement.scrollTop || document.body.scrollTop; //js兼容獲取滾動條
if($(document).scrollTop() < 300){
$(".position").css({"display":"none"});
}else{
$(".position").css({"display":"block"});
}
});
5.返回頂部和元素定位(1-10)
$(".position ul li").click(function(){
var num_index = $(this).index() + 1;
if(num_index < 10){
$("html,body").animate({scrollTop:$(".bg0" + num_index).offset().top},800);
}else if(num_ineex ==10){
$("html,body").animate({$(".bg"+num_index).offset().top},800);
}else if(num_index == 11){
$("html,body").animate({scrollTop:0},800);
}else{
return false;
}
});