目錄
一丶在相應部分顯示或者隱藏電梯導航
二丶點擊電梯導航頁面可以滾動到相應內容區域
三丶頁面滾動到某個內容區域,左側電梯導航隨之變為選中狀態
節流閥(互斥鎖)
HTML部分代碼
jQuery代碼
我們在瀏覽網站時,最常見到的網頁型別就是像某寶一樣的網頁,看似簡陋普通的網頁,在撰寫程式時,需要我們注意的細節卻很多,比如下面這個選截頁面,我們大致分為ABCDE五個部分

這篇文章主要講一下關于DE兩個部分的代碼,即電梯導航,
什么是電梯導航呢?電梯導航就是像上述圖片中最右端懸浮著的一個框,里面是分類,并且點擊某一個分類后,頁面會自動跳轉到對應內容部分,
意思是,我在D里點一個選項,頁面就會自動跳轉到E部分對應我點擊選項的內容,就像我點擊“猜你喜歡”,那么主頁面就會跳轉到這部分內容,
那么現在我們把這個要求大致分為三個小任務
- 在相應部分顯示或者隱藏電梯導航
- 點擊電梯導航頁面可以滾動到相應內容區域
- 頁面滾動到某個內容區域,左側電梯導航隨之變為選中狀態
在此之前我們先來簡單認識一下待會兒會用到的代碼:
- var a = $(" ").offset().top; (offset是獲取當前部分相對的偏移尺寸,加上top即相對頂部的偏移)
- $(document).scrollTop() (scrollTop表示內容部分被頁面卷去的頭部,即上面超出頁面的部分)
- $("body, html").stop().animate({ scrollTop: }, function() { }); (animate scrollTop 給頁面影片滾動效果)
- $(" ").each(function(i, ele) { (each遍歷匹配每一個元素,回傳 false 可用于及早停止回圈)
現在我們來做第一個任務:
一丶在相應部分顯示或者隱藏電梯導航
(如果卷去的頭部尺寸 大于等于 當前部分相對頁面頂部的偏移尺寸,就讓電梯導航欄出現 否則電梯導航欄消失)
注意,這里在宣告函式前呼叫了函式,如果不呼叫,那么重繪頁面后電梯導航欄就不會出現,
// 1.顯示隱藏電梯導航
var toolTop = $(".recommend").offset().top;//offset是獲取當前部分相對的偏移位置
toggleTool();//呼叫toggleTool()
function toggleTool() {
//scrollTop表示內容部分被頁面卷去的頭部,即上面超出頁面的部分
//如果卷去的頭部尺寸 大于等于 當前部分相對頁面頂部的偏移尺寸,
//就讓電梯導航欄出現 否則電梯導航欄消失
if ($(document).scrollTop() >= toolTop) {
$(".fixedtool").fadeIn();
} else {
$(".fixedtool").fadeOut();
};
}
//scroll表示滾動
$(window).scroll(function() {
toggleTool();
第二個任務:
二丶點擊電梯導航頁面可以滾動到相應內容區域
即當我們在電梯導航欄點擊一個目標后,去到相應的板塊,因此在這里我們借用.offset().top來獲得相應的位置
并且在這里最后一行我們多做了一步,是為了讓點擊后的電梯導航欄目標添加上被選中的效果
$(".fixedtool li").click(function() {
flag = false;
//console.log($(this).index());
// 當我們每次點擊小li 就需要計算出頁面要去往的位置
// 選出對應索引號的內容區的盒子 計算它的.offset().top
var current = $(".floor .w").eq($(this).index()).offset().top;
// 頁面影片滾動效果
$("body, html").stop().animate({
scrollTop: current
}, function() {
flag = true;
});
// 點擊之后,讓當前的小li 添加current 類名 ,姐妹移除current類名
$(this).addClass("current").siblings().removeClass();
})
第三個任務:
三丶頁面滾動到某個內容區域,左側電梯導航隨之變為選中狀態
即,我們沒有通過電梯導航欄跳轉,而是自行向下滑動頁面,那么就需要讓電梯導航欄也隨之改變到相應的類別
if (flag) {
$(".floor .w").each(function(i, ele) {
if ($(document).scrollTop() >= $(ele).offset().top) {
$(".fixedtool li").eq(i).addClass("current").siblings().removeClass();
}
})
}
在這里為了頁面的通順和流暢,我們再引入 節流閥 這個概念,因為當我們點擊電梯導航欄時,就會觸發 $(window).scroll(function()這個函式,導致每點擊一次就從頭回圈一次,
節流閥(互斥鎖)
那么我們應該怎樣使用呢?很簡單,只要在前面加上
var flag = true;
即可,
那么現在我們來對照著看一下這部分的節選HTML函代碼和jQuery代碼
HTML部分代碼
<div class="floor">
<div class="jiadian w">
<div class="box-hd">
<h3>家用電器</h3>
<div class="tab-list">
<ul>
<li><a href="#" class="style-red">熱門</a>|</li>
<li><a href="#">大家電</a>|</li>
<li><a href="#">生活電器</a>|</li>
<li><a href="#">廚房電器</a>|</li>
<li><a href="#">個護健康</a>|</li>
<li><a href="#">應季電器</a>|</li>
<li><a href="#">空氣/凈水</a>|</li>
<li><a href="#">新奇特</a>|</li>
<li><a href="#">高端電器</a></li>
</ul>
</div>
</div>
<div class="box-bd">
<ul class="tab-con">
<li class="w209">
<ul class="tab-con-list">
<li>
<a href="#">節能補貼</a>
</li>
<li>
<a href="#">4K電視</a>
</li>
<li>
<a href="#">空氣凈化器</a>
</li>
<li>
<a href="#">IH電飯煲</a>
</li>
<li>
<a href="#">滾筒洗衣機</a>
</li>
<li>
<a href="#">電熱水器</a>
</li>
</ul>
<img src="upload/floor-1-1.png" alt="">
</li>
<li class="w329">
<img src="upload/pic1.jpg" alt="">
</li>
<li class="w219">
<div class="tab-con-item">
<a href="#">
<img src="upload/floor-1-2.png" alt="">
</a>
</div>
<div class="tab-con-item">
<a href="#">
<img src="upload/floor-1-3.png" alt="">
</a>
</div>
</li>
<li class="w220">
<div class="tab-con-item">
<a href="#">
<img src="upload/floor-1-4.png" alt="">
</a>
</div>
</li>
<li class="w220">
<div class="tab-con-item">
<a href="#">
<img src="upload/floor-1-5.png" alt="">
</a>
</div>
<div class="tab-con-item">
<a href="#">
<img src="upload/floor-1-6.png" alt="">
</a>
</div>
</li>
</ul>
<!-- <ul class="tab-con">
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
<li>5</li>
</ul> -->
</div>
</div>
<div class="shouji w">
<div class="box-hd">
<h3>手機通訊</h3>
<div class="tab-list">
<ul>
<li><a href="#" class="style-red">熱門</a>|</li>
<li><a href="#">大家電</a>|</li>
<li><a href="#">生活電器</a>|</li>
<li><a href="#">廚房電器</a>|</li>
<li><a href="#">個護健康</a>|</li>
<li><a href="#">應季電器</a>|</li>
<li><a href="#">空氣/凈水</a>|</li>
<li><a href="#">新奇特</a>|</li>
<li><a href="#">高端電器</a></li>
</ul>
</div>
</div>
<div class="box-bd">
<ul class="tab-con">
<li class="w209">
<ul class="tab-con-list">
<li>
<a href="#">節能補貼</a>
</li>
<li>
<a href="#">4K電視</a>
</li>
<li>
<a href="#">空氣凈化器</a>
</li>
<li>
<a href="#">IH電飯煲</a>
</li>
<li>
<a href="#">滾筒洗衣機</a>
</li>
<li>
<a href="#">電熱水器</a>
</li>
</ul>
<img src="upload/floor-1-1.png" alt="">
</li>
<li class="w329">
<img src="upload/pic1.jpg" alt="">
</li>
<li class="w219">
<div class="tab-con-item">
<a href="#">
<img src="upload/floor-1-2.png" alt="">
</a>
</div>
<div class="tab-con-item">
<a href="#">
<img src="upload/floor-1-3.png" alt="">
</a>
</div>
</li>
<li class="w220">
<div class="tab-con-item">
<a href="#">
<img src="upload/floor-1-4.png" alt="">
</a>
</div>
</li>
<li class="w220">
<div class="tab-con-item">
<a href="#">
<img src="upload/floor-1-5.png" alt="">
</a>
</div>
<div class="tab-con-item">
<a href="#">
<img src="upload/floor-1-6.png" alt="">
</a>
</div>
</li>
</ul>
<!-- <ul class="tab-con">
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
<li>5</li>
</ul> -->
</div>
</div>
<div class="diannao w">
<div class="box-hd">
<h3>電腦辦公</h3>
<div class="tab-list">
<ul>
<li><a href="#" class="style-red">熱門</a>|</li>
<li><a href="#">大家電</a>|</li>
<li><a href="#">生活電器</a>|</li>
<li><a href="#">廚房電器</a>|</li>
<li><a href="#">個護健康</a>|</li>
<li><a href="#">應季電器</a>|</li>
<li><a href="#">空氣/凈水</a>|</li>
<li><a href="#">新奇特</a>|</li>
<li><a href="#">高端電器</a></li>
</ul>
</div>
</div>
<div class="box-bd">
<ul class="tab-con">
<li class="w209">
<ul class="tab-con-list">
<li>
<a href="#">節能補貼</a>
</li>
<li>
<a href="#">4K電視</a>
</li>
<li>
<a href="#">空氣凈化器</a>
</li>
<li>
<a href="#">IH電飯煲</a>
</li>
<li>
<a href="#">滾筒洗衣機</a>
</li>
<li>
<a href="#">電熱水器</a>
</li>
</ul>
<img src="upload/floor-1-1.png" alt="">
</li>
<li class="w329">
<img src="upload/pic1.jpg" alt="">
</li>
<li class="w219">
<div class="tab-con-item">
<a href="#">
<img src="upload/floor-1-2.png" alt="">
</a>
</div>
<div class="tab-con-item">
<a href="#">
<img src="upload/floor-1-3.png" alt="">
</a>
</div>
</li>
<li class="w220">
<div class="tab-con-item">
<a href="#">
<img src="upload/floor-1-4.png" alt="">
</a>
</div>
</li>
<li class="w220">
<div class="tab-con-item">
<a href="#">
<img src="upload/floor-1-5.png" alt="">
</a>
</div>
<div class="tab-con-item">
<a href="#">
<img src="upload/floor-1-6.png" alt="">
</a>
</div>
</li>
</ul>
<!-- <ul class="tab-con">
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
<li>5</li>
</ul> -->
</div>
</div>
<div class="jiaju w">
<div class="box-hd">
<h3>精品家具</h3>
<div class="tab-list">
<ul>
<li><a href="#" class="style-red">熱門</a>|</li>
<li><a href="#">大家電</a>|</li>
<li><a href="#">生活電器</a>|</li>
<li><a href="#">廚房電器</a>|</li>
<li><a href="#">個護健康</a>|</li>
<li><a href="#">應季電器</a>|</li>
<li><a href="#">空氣/凈水</a>|</li>
<li><a href="#">新奇特</a>|</li>
<li><a href="#">高端電器</a></li>
</ul>
</div>
</div>
<div class="box-bd">
<ul class="tab-con">
<li class="w209">
<ul class="tab-con-list">
<li>
<a href="#">節能補貼</a>
</li>
<li>
<a href="#">4K電視</a>
</li>
<li>
<a href="#">空氣凈化器</a>
</li>
<li>
<a href="#">IH電飯煲</a>
</li>
<li>
<a href="#">滾筒洗衣機</a>
</li>
<li>
<a href="#">電熱水器</a>
</li>
</ul>
<img src="upload/floor-1-1.png" alt="">
</li>
<li class="w329">
<img src="upload/pic1.jpg" alt="">
</li>
<li class="w219">
<div class="tab-con-item">
<a href="#">
<img src="upload/floor-1-2.png" alt="">
</a>
</div>
<div class="tab-con-item">
<a href="#">
<img src="upload/floor-1-3.png" alt="">
</a>
</div>
</li>
<li class="w220">
<div class="tab-con-item">
<a href="#">
<img src="upload/floor-1-4.png" alt="">
</a>
</div>
</li>
<li class="w220">
<div class="tab-con-item">
<a href="#">
<img src="upload/floor-1-5.png" alt="">
</a>
</div>
<div class="tab-con-item">
<a href="#">
<img src="upload/floor-1-6.png" alt="">
</a>
</div>
</li>
</ul>
</div>
</div>
</div>
<!-- 樓層區 end -->
<!-- 固定電梯導航 -->
<div class="fixedtool">
<ul>
<li class="current">家用電器</li>
<li>手機通訊</li>
<li>電腦辦公</li>
<li>精品家具</li>
</ul>
</div>
jQuery代碼
$(function() {
// 當我們點擊了小li 此時不需要執行 頁面滾動事件里面的 li 的背景選擇 添加 current
// 節流閥 互斥鎖
var flag = true;
// 1.顯示隱藏電梯導航
var toolTop = $(".recommend").offset().top;//offset是獲取當前部分相對的偏移位置
//toggleTool();//呼叫toggleTool()
function toggleTool() {
//scrollTop表示內容部分被頁面卷去的頭部,即上面超出頁面的部分
//如果卷去的頭部尺寸 大于等于 當前部分相對頁面頂部的偏移尺寸,
//就讓電梯導航欄出現 否則電梯導航欄消失
if ($(document).scrollTop() >= toolTop) {
$(".fixedtool").fadeIn();
} else {
$(".fixedtool").fadeOut();
};
}
//scroll表示滾動
$(window).scroll(function() {
toggleTool();
// 2. 點擊電梯導航頁面可以滾動到相應內容區域
$(".fixedtool li").click(function() {
flag = false;
//console.log($(this).index());
// 當我們每次點擊小li 就需要計算出頁面要去往的位置
// 選出對應索引號的內容區的盒子 計算它的.offset().top
var current = $(".floor .w").eq($(this).index()).offset().top;
// 頁面影片滾動效果
$("body, html").stop().animate({
scrollTop: current
}, function() {
flag = true;
});
// 點擊之后,讓當前的小li 添加current 類名 ,姐妹移除current類名
$(this).addClass("current").siblings().removeClass();
})
// 3. 頁面滾動到某個內容區域,左側電梯導航小li相應添加和洗掉current類名
if (flag) {
$(".floor .w").each(function(i, ele) {
if ($(document).scrollTop() >= $(ele).offset().top) {
//console.log(i);
$(".fixedtool li").eq(i).addClass("current").siblings().removeClass();
}
})
}
});
})
看一下效果

在這里我們最后再插入一個小功能(其實是剛才忘記寫了)回到頂部!
其實這個功能非常的簡單,只需要幾行代碼就可以搞定
<!DOCTYPE html>
<head>
<meta charset="UTF-8">
<title>Wellfancy</title>
<style>
body {
height: 2000px;
}
.back {
position: fixed;
width: 50px;
height: 50px;
background-color: pink;
right: 30px;
bottom: 100px;
display: none;
}
.container {
width: 900px;
height: 500px;
background-color: lightgreen;
margin: 400px auto;
}
</style>
<script src="https://code.jquery.com/jquery-3.5.1.min.js"></script>
</head>
<body>
<div class="back">回傳頂部</div>
<div class="container">
</div>
<script>
$(function() {
$(document).scrollTop(100);
var boxTop = $(".container").offset().top;
$(window).scroll(function() {
if ($(document).scrollTop() >= boxTop) {
$(".back").fadeIn();
} else {
$(".back").fadeOut();
}
});
// 回傳頂部
$(".back").click(function() {
$("body, html").stop().animate({
scrollTop: 0
});
})
})
</script>
</body>
</html>

這樣就可以做出一個帶有影片效果的回傳頂部啦!
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/292971.html
標籤:其他
