js實(shí)現(xiàn)的鼠標(biāo)滾輪滾動(dòng)切換頁(yè)面效果(類(lèi)似360默認(rèn)頁(yè)面滾動(dòng)切換效果)
本文實(shí)例講述了js實(shí)現(xiàn)的鼠標(biāo)滾輪滾動(dòng)切換頁(yè)面效果的方法。分享給大家供大家參考,具體如下:
運(yùn)行效果截圖如下:


具體代碼如下:
<!DOCTYPE html>
<html>
<head>
<title>wheel</title>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
<script type="text/javascript" >
var currentShowPageIndex = 0;
var animateTimeout = null;
var isWheelAnimating = false;
var isWheelUp = function(event) {
event = event || window.event;
var up = true;
if(event.wheelDelta){//IE/Opera/Chrome
up = event.wheelDelta / 120 == 1 ? true : false;
}else{//Firefox
up = event.detail / 3 == 1 ? true : false;
}
return up;
}
var changeBar = function(prevIndex, index) {
var barUl = document.getElementById('barUl');
var barLiList = barUl.getElementsByTagName('li');
barLiList[prevIndex].className = "";
barLiList[index].className = "active";
}
var changePage = function(pageIndex) {
var showPageUl = document.getElementById('wheelUl');
changeBar(currentShowPageIndex, pageIndex);
currentShowPageIndex = pageIndex;
var left = -(currentShowPageIndex) * 1000;
showPageUl.style.marginLeft = left + "px";
return;
}
var animate = function(obj, mode, from, to){
if(animateTimeout) {
clearTimeout(animateTimeout);
}
if(mode == "left") {
if(from > to) {
from = from - 50;
obj.style.marginLeft = (from) + "px";
setTimeout(function(){
animate(obj, mode, from, to);
}, 30);
} else {
isWheelAnimating = false;
}
return;
}
if(from < to) {
from = from + 50;
obj.style.marginLeft = (from) + "px";
setTimeout(function(){
animate(obj, mode, from, to);
}, 30);
} else {
isWheelAnimating = false;
}
}
var mouseWheel = function(event) {
if(isWheelAnimating) {
return;
}
isWheelAnimating = true;
var wheelUp = isWheelUp(event);
var showPageUl = document.getElementById('wheelUl');
var showPageUlWidth = parseInt(showPageUl.offsetWidth);
var showPageLiList = showPageUl.getElementsByTagName('li');
var showPageLiListLength = showPageLiList.length;
var wheelWrapperLeft = parseInt(document.getElementById('wheelWrapper').offsetLeft);
if(wheelUp && currentShowPageIndex < showPageLiListLength - 1) {
changeBar(currentShowPageIndex, currentShowPageIndex + 1);
currentShowPageIndex ++;
var left = -(currentShowPageIndex) * 1000;
//animate(showPageUl, "right", -(currentShowPageIndex - 1) * 1000, -(currentShowPageIndex - 1) * 1000);
var from = -(currentShowPageIndex - 1) * 1000;
var to = -(currentShowPageIndex) * 1000;
animate(showPageUl, "left", from, to);
return;
}
if(!wheelUp && currentShowPageIndex > 0) {
changeBar(currentShowPageIndex, currentShowPageIndex - 1);
currentShowPageIndex --;
var from = -(currentShowPageIndex + 1) * 1000;
var to = -(currentShowPageIndex) * 1000;
animate(showPageUl, "right", from, to);
return;
}
isWheelAnimating = false;
};
if(document.addEventListener){
document.addEventListener('DOMMouseScroll',function(event) { mouseWheel(event); },false);
}
document.onmousewheel = function(event) { mouseWheel(event); }
window.onload = function(){
var barUl = document.getElementById('barUl');
var barLiList = barUl.getElementsByTagName('li');
for(var i=0,length=barLiList.length; i<length; i++) {
(function(index){
barLiList[index].onclick = function(){
changePage(index);
};
})(i);
}
}
</script>
<style type="text/css" >
body { background:#494949; margin:0; }
ul { list-style:none; margin:0; padding:0; }
li { float:left;}
#wheelWrapper {
width:1000px; height:550px; margin:0 auto;
position:fixed; left:50%; margin-left:-505px;
bottom:50px; overflow:hidden;
}
#wheelUl {
width:5050px; height:500px;
}
#barUl {
clear:both; margin:0 auto; width:550px;
margin-top:20px; line-height:25px;
}
#barUl>li {
width:100px; background:orange;
height:25px; margin-right:10px;
border-radius:5px; text-align:center;
-webkit-border-radius:5px;
-moz-border-radius:5px;
}
#barUl>li:hover {
background:#C36C12;
}
#barUl>li[class=active] {
background:#C36C12;
}
#wheelUl>li { width:1000px; }
.wheel {
width:994px; height:500px; background:#FAAA3C;
border-radius:10px;
-webkit-border-radius:10px;
-moz-border-radius:10px;
margin:0 auto;
line-height:300px;
font-size:100px;
text-align:center;
}
.radius {
border-radius:3px;
-webkit-border-radius:3px;
-moz-border-radius:3px;
}
h1 { text-align:center; color:#fff; }
</style>
</head>
<body id="body">
<h1 >ie8+,chrome,ff提供支持</h1>
<div id="wrapper">
<div id="wheelWrapper">
<ul id="wheelUl" >
<li >
<div class="wheel">
1_page1
</div>
</li>
<li >
<div class="wheel">
2_page2
</div>
</li>
<li >
<div class="wheel">
3_page3
</div>
</li>
<li >
<div class="wheel">
4_page4
</div>
</li>
<li >
<div class="wheel">
5_page5
</div>
</li>
</ul>
<ul id="barUl">
<li class="active">
1
</li>
<li>
2
</li>
<li>
3
</li>
<li>
4
</li>
<li>
5
</li>
</ul>
</div>
</div>
</body>
</html>
更多關(guān)于jQuery特效相關(guān)內(nèi)容感興趣的讀者可查看本站專(zhuān)題:《jQuery常見(jiàn)經(jīng)典特效匯總》及《jQuery動(dòng)畫(huà)與特效用法總結(jié)》
希望本文所述對(duì)大家jQuery程序設(shè)計(jì)有所幫助。
- 簡(jiǎn)單實(shí)現(xiàn)js頁(yè)面切換功能
- js實(shí)現(xiàn)單一html頁(yè)面兩套css切換代碼
- echarts同一頁(yè)面中四個(gè)圖表切換的js數(shù)據(jù)交互方法示例
- 基于JS實(shí)現(xiàn)翻書(shū)效果的頁(yè)面切換樣式
- 使用AngularJS實(shí)現(xiàn)可伸縮的頁(yè)面切換的方法
- javascript單頁(yè)面手勢(shì)滑屏切換原理詳解
- JavaScript實(shí)現(xiàn)鼠標(biāo)滾輪控制頁(yè)面圖片切換功能示例
- jQuery實(shí)現(xiàn)切換頁(yè)面過(guò)渡動(dòng)畫(huà)效果
- jquery結(jié)合html實(shí)現(xiàn)中英文頁(yè)面切換
- JavaScript/jQuery實(shí)現(xiàn)切換頁(yè)面效果
相關(guān)文章
uni.getLocation和wx.getLocation方法調(diào)用無(wú)效也不返回失敗的解決方案
這篇文章主要給大家介紹了關(guān)于uni.getLocation和wx.getLocation方法調(diào)用無(wú)效也不返回失敗的解決方案,文中通過(guò)實(shí)例代碼以及圖文介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2023-04-04
JavaScript利用油猴腳本實(shí)現(xiàn)去水印功能
這篇文章主要為大家詳細(xì)介紹了JavaScript如何利用油猴腳本實(shí)現(xiàn)去水印功能,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2023-03-03
原生js實(shí)現(xiàn)網(wǎng)易輪播圖效果
這篇文章主要為大家詳細(xì)介紹了原生js實(shí)現(xiàn)網(wǎng)易輪播圖效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-10-10
JS數(shù)組降維的實(shí)現(xiàn)Array.prototype.concat.apply([], arr)
這篇文章主要介紹了JS數(shù)組降維的實(shí)現(xiàn)Array.prototype.concat.apply([], arr),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-04-04
JS獲取短信驗(yàn)證碼倒計(jì)時(shí)的實(shí)現(xiàn)代碼
這篇文章主要介紹了JS獲取短信驗(yàn)證碼倒計(jì)時(shí)的實(shí)現(xiàn)代碼,需要的朋友可以參考下2017-05-05

