成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久

您的位置:首頁技術文章
文章詳情頁

原生JS運動實現輪播圖

瀏覽:168日期:2024-04-08 18:43:37

原生JS運動實現輪播圖

**基本原理:**通過控制包含n張圖片的ul的left值來實現圖片自動運動的效果,其中列表中li元素的個數為n,第一個li和最后一個li里存放的圖片應為同一張圖片,當圖片運動到最后一張時,將ul的left值設為0,即可達到圖片無線輪播的效果。

運動函數的實現

函數需傳入元素(即需要參與運動的元素)、目標值(以對象的形式呈現,如{left: 300})、callback(回調函數)。

//多物體多值運動+回調機制function startMove(dom, attrObj, callback) { var key = true; var iSpeed = null, iCur = null; clearInterval(dom.timer); if (key) { dom.timer = setInterval(function() { //bStop用來判斷是否開始執行回調函數 var bStop = true; //判斷傳入目標值中的“鍵”類型是否為opacity for (var attr in attrObj) { //若要改變的樣式為opacity,則將元素的opacity擴大100被進行操作 if (attr === ’opacity’) { iCur = parseFloat(getStyle(dom, attr)) * 100; } else { iCur = parseInt(getStyle(dom, attr)); } //運動速度設為目標值減去當前值的一半,即當前狀態離目標值越接近,運動速度越小 iSpeed = (attrObj[attr] - iCur) / 2; //對速度進行取整 iSpeed = iSpeed > 0 ? Math.ceil(iSpeed) : Math.floor(iSpeed); if (attr === ’opacity’) { dom.style.opacity = (iCur + iSpeed) / 100; } else { dom.style[attr] = iCur + iSpeed + ’px’; } if (iCur !== attrObj[attr]) { bStop = false; } } //當bStop為true時,元素的所有樣式均已達到目標值,清理定時器并執行回調函數 if (bStop) { clearInterval(dom.timer); typeof callback == ’function’ && callback(); } }, 30) } if (!key) { }}//用來獲取元素實時的樣式值function getStyle(elem, prop){ if (window.getComputedStyle){ return window.getComputedStyle(elem, null)[prop]; }}

HTML部分

HTML中包含一個div,用來顯示當前要播放的圖片,該div中又包含一個ul(用來存放所有包含圖片的li)、三個div(其中兩個充當圖片左右切換的按鈕,第三個存放圖片索引點,通過點擊索引也可切換到要查看的圖片),代碼如下:

<div class='wrapper'> <ul class='sliderPage'> <li> <img src='http://www.piao2010.com/bcjs/image/dog/阿拉斯加.jpeg'/> </li> <li> <img src='http://www.piao2010.com/bcjs/image/dog/比熊.jpeg'/> </li> <li> <img src='http://www.piao2010.com/bcjs/image/dog/邊牧.jpeg'/> </li> <li> <img src='http://www.piao2010.com/bcjs/image/dog/柯基.jpeg'/> </li> <li> <img src='http://www.piao2010.com/bcjs/image/dog/阿拉斯加.jpeg'/> </li> </ul> <div class='btn leftBtn'>&lt;</div> <div class='btn rightBtn'>&gt;</div> <div class='sliderIndex'> <span class='active'></span> <span></span> <span></span> <span></span> </div></div>

CSS代碼

此處采用的為內聯樣式表

<style> *{ margin: 0; padding: 0; list-style: none; } .wrapper{ position: relative; margin: 100px auto 0; width: 600px; height: 360px; overflow: hidden; } .wrapper .sliderPage{ position: absolute; left: 0; width: 3000px; height: 360px; } .wrapper .sliderPage li{ width: 600px; height: 360px; float: left; } .wrapper .sliderPage li img{ width: 100%; height: 100%; } .btn{ position: absolute; top: 50%; width: 20px; height: 20px; color: #fff; text-align: center; line-height: 20px; background-color: #000; opacity: 0.2; cursor: pointer; } .leftBtn{ left: 5px; } .rightBtn{ right: 5px; } .wrapper:hover .btn{ opacity: 0.8; } .sliderIndex{ position: absolute; width: 100%; bottom: 10px; cursor: pointer; text-align: center; } span{ width: 8px; height: 8px; background-color: #cccccc; border-radius: 50%; display: inline-block; margin-right: 5px; } .active{ background-color: orange; }</style>

圖片自動運動及點擊運動事件綁定

要點:

1、當圖片運動到最后一張時(顯示圖片為第一張圖片),將ul的left值設為0即可實現無限輪播;2、圖片每次運動的值為li的寬度;3、圖片的運動需要一定的時間,因此在圖片運動過程中應禁止產生其它定時器,否則會造成運動尺寸混亂而導致圖片輪播出現問題,這里用lock來進行實現,在ul運動過程中將lock值設為false,運動結束后又將lock值設為true;4、通過index值來實現索引顯示圖片功能,圖片輪播過程中,index初始值為0,當圖片向右輪播時index值加1,圖片向左輪播時,index值減1,index值為0時,若讓圖片向左輪播,則將index值設為n(li個數)并進行輪播,而當index值為3且圖片向右輪播時,在ul運動完成后將index值設為0;

var timer = null;var sliderPage = document.getElementsByTagName(’ul’)[0];var moveWidth = sliderPage.children[0].offsetWidth;var num = sliderPage.children.length - 1;var leftBtn = document.getElementsByClassName(’leftBtn’)[0];var rightBtn = document.getElementsByClassName(’rightBtn’)[0];var lock = true;var index = 0;var indexArray = document.getElementsByClassName(’sliderIndex’)[0].getElementsByTagName(’span’);//索引切換for (var i = 0; i < indexArray.length; i ++){ (function(myindex){ indexArray[myindex].onclick = function(){ lock = false; clearTimeout(timer); index = myindex; changeIndex(index); startMove(sliderPage, {left: -index * moveWidth}, function(){ lock = true; timer = setTimeout(autoMove, 3000); }) } }(i))}//圖片運動過程中改變index點的樣式function changeIndex(index){ for (var i = 0; i < indexArray.length; i++){ indexArray[i].className = ’’; } indexArray[index].className = ’active’;}timer = setTimeout(autoMove, 3000);//向左翻leftBtn.onclick = function (){ autoMove(’right->left’);}//向右翻rightBtn.onclick = function (){ autoMove(’left->right’);}//direction//默認輪播方向 ’left->right’ / undefined//點擊left按鈕 ’right->left’function autoMove(direction){ clearTimeout(timer); if (lock){ lock = false; if (!direction || direction === ’left->right’){ index++; startMove(sliderPage, {left: sliderPage.offsetLeft - moveWidth}, function(){ if (sliderPage.offsetLeft === - num * moveWidth){ index = 0; sliderPage.style.left = ’0px’; } timer = setTimeout(autoMove, 3000); lock = true; changeIndex(index); }); }else if(direction === ’right->left’){ if (sliderPage.offsetLeft === 0){ index = num; sliderPage.style.left = - num * moveWidth + ’px’; } index--; startMove(sliderPage, {left: sliderPage.offsetLeft + moveWidth}, function () { timer = setTimeout(autoMove, 3000); lock = true; changeIndex(index); }) } }}

以上即為通過原生JS運動所實現的圖片輪播。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網。

標簽: JavaScript
相關文章:
成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久
精品在线观看视频| 精品一区二区三区视频| 亚洲成人免费av| 亚洲小说欧美另类婷婷| 亚洲精品在线免费观看视频| 婷婷久久综合九色国产成人| aa日韩免费精品视频一| 欧美精品一区二区三区蜜桃视频| 日韩1区2区日韩1区2区| 日韩视频在线观看国产| 国产视频视频一区| 国产真实乱子伦精品视频| 毛片一区二区| 亚洲丝袜另类动漫二区| 欧美黄色一级视频| 欧美大尺度电影在线| 日本伊人精品一区二区三区观看方式| 亚洲国产精品www| 国产人成亚洲第一网站在线播放 | 7777精品久久久大香线蕉| 亚洲bdsm女犯bdsm网站| 永久91嫩草亚洲精品人人| 日本一区二区三区在线不卡 | 99精品国产福利在线观看免费| 欧美国产综合一区二区| 99精品视频在线观看免费| 日韩一区二区三区四区| 国产一本一道久久香蕉| 欧美精选一区二区| 久久99精品久久久久久久久久久久 | 精品国产电影一区二区| 国产精品1区二区.| 这里只有精品99re| 激情图片小说一区| 欧美日韩精品一区二区三区| 麻豆精品在线播放| 色婷婷久久一区二区三区麻豆| 亚洲成a人片综合在线| 亚洲一区二区三区免费观看| 国产精品福利一区二区三区| 欧美一区久久| 国产婷婷色一区二区三区在线| 不卡在线观看av| 精品欧美一区二区久久| 国产成人午夜电影网| 欧美剧情片在线观看| 激情欧美一区二区| 制服丝袜国产精品| 成人久久视频在线观看| 日韩欧美精品在线| 成人午夜碰碰视频| 亚洲欧洲一区二区在线观看| 亚洲美女少妇撒尿| 一区二区冒白浆视频| 亚洲一区二区三区国产| 久久九九精品| 国内偷窥港台综合视频在线播放| 欧美一区二区精品在线| 91免费小视频| 另类综合日韩欧美亚洲| 欧美日韩国产综合一区二区三区| 国产成人综合精品三级| 久久亚洲综合色| 在线免费观看欧美| 亚洲午夜激情av| 欧美日韩亚洲高清一区二区| 懂色一区二区三区免费观看| 国产情人综合久久777777| 日韩亚洲视频| 免费看黄色91| 精品成人私密视频| 亚洲黄色成人久久久| 免费人成在线不卡| 精品国产3级a| 亚洲激情一区二区三区| 亚洲午夜精品网| 欧美日韩精品一区二区三区蜜桃 | 寂寞少妇一区二区三区| 欧美色图一区二区三区| 黄网站免费久久| 在线观看一区二区视频| 成人欧美一区二区三区白人| 欧美日韩精品久久| 亚洲欧美日韩成人高清在线一区| 国产乱码精品一区二区三区不卡| 视频一区二区三区入口| 欧美日韩精品一区二区三区蜜桃 | 天天av天天翘天天综合网色鬼国产| 日本高清视频一区二区| 国产精品系列在线观看| 最新日韩av在线| 欧美嫩在线观看| 亚洲欧洲一区二区天堂久久| 精品一区二区精品| 国产精品卡一卡二| 一区二区三区四区五区在线| 日韩不卡一区二区| 欧美日韩中文另类| 欧美日韩一区在线观看视频| 亚洲综合免费观看高清在线观看| 色老汉av一区二区三区| 国产一区 二区| 久久麻豆一区二区| 亚洲国产欧洲综合997久久| 日韩在线播放一区二区| 欧美日韩综合在线免费观看| 国产麻豆视频一区二区| 国产日韩欧美精品一区| 91九色02白丝porn| 亚洲柠檬福利资源导航| 国产精品主播| 激情国产一区二区| 精品国产乱码91久久久久久网站| 红杏aⅴ成人免费视频| 午夜亚洲国产au精品一区二区| 欧美日韩视频在线一区二区| 99久久久无码国产精品| 国产免费观看久久| 国产亚洲精品自拍| 精品在线观看免费| 久久色视频免费观看| 色婷婷国产精品| 99久久久精品| 亚洲综合久久久| 欧美一级黄色录像| 黄色成人av网站| 日本中文字幕一区二区有限公司| 欧美成人a视频| 激情婷婷欧美| aa级大片欧美| 视频在线观看一区二区三区| 亚洲精品日韩精品| 国产一区啦啦啦在线观看| 国产欧美一区二区三区网站| 久久久久欧美精品| 国产91露脸合集magnet| 亚洲靠逼com| 欧美少妇xxx| 日韩精品在线看片z| 日韩一级欧洲| 免费人成网站在线观看欧美高清| 久久无码av三级| 色域天天综合网| 色综合天天在线| 天涯成人国产亚洲精品一区av| 国产精品三级视频| 欧美视频在线一区二区三区| 午夜电影亚洲| 精品一区二区三区的国产在线播放 | 国产欧美日韩一区二区三区在线| 国产精品一区二区久久精品爱涩| 中文字幕国产一区| 精品视频在线免费观看| 欧美成人三级在线| 久久夜色精品| 黄色精品网站| 国产一区二区在线观看免费| 亚洲精品免费视频| 精品国产三级电影在线观看| 久久精品人人| 欧美在线播放一区二区| 蜜桃久久久久久久| 亚洲三级电影网站| 精品美女在线观看| 日韩精品乱码av一区二区| 欧美激情综合在线| 欧美日韩国产在线观看| 日韩午夜精品| 午夜日韩在线| 国产成人久久精品77777最新版本 国产成人鲁色资源国产91色综 | 一区二区三区高清在线| 精品福利视频一区二区三区| 91久久免费观看| 亚洲国产欧美不卡在线观看| 成人中文字幕在线| 天天综合天天综合色| 亚洲国产精品久久一线不卡| 国产精品午夜久久| 精品国产自在久精品国产| 日本福利一区二区| 久久尤物视频| 好吊色欧美一区二区三区视频| 婷婷一区二区三区| 国产精品久久久久久久久免费丝袜 | 精品中文字幕一区二区小辣椒| 亚洲免费在线观看| 久久久久久电影| 精品视频一区三区九区| 国产日韩欧美在线播放不卡| 91浏览器打开| 韩国一区二区三区| 久久国产免费看| 婷婷久久综合九色综合伊人色| 亚洲欧美偷拍另类a∨色屁股| 久久久久高清精品| 精品久久一区二区| 欧美日韩国产美| 亚洲欧美国产毛片在线| 久久久www成人免费毛片麻豆 | 色婷婷综合五月|