當一個元素的實際高度(或寬度)超過其顯示區域的高度(或寬度)時,在一定設置下,浏覽器會為該元素顯示相應的垂直滾動條(或水平滾動條)。我們在 學習網的在線代碼測試工具就經常看到滾動條效果:
在jQuery中,我們可以使用scrollTop()來獲取或設置元素相對於垂直滾動條頂部的距離,可以使用scrollLeft()來獲取或設置元素相對於水平滾動條左部的距離。
語法:
$().scrollTop() //獲取滾動距離 $().scrollTop(value) //設置滾動距離
說明:
scrollLeft()方法的用法跟scrollTop()方法一樣。
scrollTop()和scrollLeft()獲取的值是一個數字(不帶單位),這個跟height()、width()是一樣的。
舉例:
在線測試
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
<style type="text/css">
body{height:1800px;}
#box1,#box2
{
display:inline-block;
width:100px;
height:100px;
}
#box1
{
background-color:Red;
}
#box2
{
background-color:Orange;
position:fixed;
}
</style>
<script type="text/javascript" src="App_js/jquery-1.12.0.min.js"></script>
<script type="text/javascript">
$(function () {
//獲取box2距離頂部的距離
var top = $("#box2").offset().top;
//根據滾動距離判斷定位
$(window).scroll(function () {
//當滾動條距離大於box2距離頂部的距離時,設置固定定位
if ($(this).scrollTop() > top) {
$("#box2").css({ "position": "fixed", "top": "0" });
}
//當滾動條距離小於於box2距離頂部的距離時,設置相對定位
else {
$("#box2").css({ "position": "relative" });
}
});
})
</script>
</head>
<body>
<div id="box1"></div><br />
<div id="box2"></div>
</body>
</html>
在浏覽器預覽效果如下:
分析:
原理非常簡單,當滾動條距離大於box2距離頂部的距離時,設置固定定位;當滾動條距離大於box2距離頂部的距離時,設置固定定位。
$(window).scroll(function () {
//滾動事件代碼
}
上面這段代碼表示“滾動條的滾動事件”。我們在後續課程中“jQuery事件”這一章會詳細講解,在這裡我們只需要了解一下即可。$(this).scrollTop()中的this指的是window,等價於$(window).scrollTop(),表示獲取滾動條距離浏覽器窗口頂部的距離。
上面這個例子的開發技巧非常重要。我們常見到的回頂部特效、下拉固定特效等,其實就跟這個技巧有關,記得好好琢磨一下。