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)容感興趣的讀者可查看本站專題:《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)文章
js控制臺(tái)報(bào)錯(cuò)Uncaught TypeError: Cannot read p
本文主要介紹了js控制臺(tái)報(bào)錯(cuò)Uncaught TypeError: Cannot read properties of undefined (reading ‘a(chǎn)ppendChild‘)的解決,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-07-07JS實(shí)現(xiàn)點(diǎn)擊圖片在當(dāng)前頁(yè)面放大并可關(guān)閉的漂亮效果
點(diǎn)擊圖片在當(dāng)前頁(yè)面放大的漂亮效果實(shí)現(xiàn)方法有很多,在本文將為大家介紹下使用Lightbox JS是如何實(shí)現(xiàn)的,感興趣的朋友不要錯(cuò)過(guò)2013-10-10js使用html()或text()方法獲取設(shè)置p標(biāo)簽的顯示的值
html()方法可以用來(lái)讀取或者設(shè)置某個(gè)元素中的HTML內(nèi)容,text()方法可以用來(lái)讀取或者沒(méi)置某個(gè)元素中的文本內(nèi)容2014-08-08老生常談javascript的類(lèi)型轉(zhuǎn)換
下面小編就為大家?guī)?lái)一篇老生常談javascript的類(lèi)型轉(zhuǎn)換。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-10-10微信小程序iBeacon測(cè)距及穩(wěn)定程序的實(shí)現(xiàn)解析
這篇文章主要介紹了微信小程序iBeacon測(cè)距及穩(wěn)定程序的實(shí)現(xiàn)解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-07-07記錄微信小程序 height: calc(xx - xx);無(wú)效問(wèn)題
這篇文章主要介紹了微信小程序 - height: calc(xx - xx);無(wú)效 問(wèn)題,文中給大家擴(kuò)展介紹下jquery點(diǎn)擊添加樣式,再次點(diǎn)擊移除樣式的實(shí)例代碼,需要的朋友可以參考下2019-12-12