精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

原生JS利用transform實現banner的無限滾動

開發 前端
原生JS怎樣利用transform實現banner的無限滾動及其功能原理。一起來看看吧。

 功能

[[330208]]

  •  默認情況無限循環向右移動
  •  點擊數字切換到對應圖片
  •  點擊左右切換可切換圖片

原理

首先說下原理。

  1.  在布局上所有的圖片都是重疊的,即只要保證Y方向對齊即可,當前可見的圖z-index層級最高。
  2.  每隔3s中更換一張圖片,使用setTimeout定時。
  3.  使用gIndex記錄當前可視區域的展示的是哪張圖片下標,每次更換,計算下一張圖片的下標。
  4.  通過requestAnimationFrame實現一次圖片切換的動畫。

這種方法也可以做到整個頁面始終只有2個img標簽,而不必把所有的img節點全部創建出來,要點是每次更換不可見img的src。

動畫的實現

  1.  首先定義一個timestap,這個值記錄每個幀移動多少距離。定義初始step=0,記錄移動的步數。
  2.  每次移動的距離moveWidth是timestamp*step,圖片1向右移動增加moveWidth,圖片2從左側進入moveWidth。因此,圖片1的transform是translate(moveWidth), 而圖片2的transform則是translate(moveWidth-圖片寬度)。

      3.  step+1

      4.  如果moveWidth>圖片寬度,步驟5,否則requestAnimationFrame請求下一次執行,繼續2-4.

      5.  圖片1和2都將位置放置在起始位置,圖片2的z-index設置為最高。

這樣就完成了一次移動的動畫。

html代碼 

  1. <header>  
  2.     <div class="box">  
  3.         <img src="imgs/banner1.jpg">  
  4.         <img src="imgs/banner2.jpg">  
  5.         <img src="imgs/banner3.jpg">  
  6.         <img src="imgs/banner4.jpg">  
  7.     </div>  
  8.     <div class="buttons">  
  9.         <div class="active">1</div>  
  10.         <div>2</div>  
  11.         <div>3</div>  
  12.         <div>4</div>  
  13.     </div>  
  14.     <div class="left">  
  15.         <div class="arrow"></div>  
  16.     </div>  
  17.     <div class="right">  
  18.         <div class="arrow"></div>  
  19.     </div>  
  20. </header> 

JS代碼 

  1. var timeout = null 
  2. window.onload = function () {  
  3.     var oLeft = document.querySelector('.left');  
  4.     var oRight = document.querySelector('.right');  
  5.     var oButton = document.querySelector('.buttons');  
  6.     var oButtons = document.querySelectorAll('.buttons div');  
  7.     var oImgs = document.querySelectorAll('.box img');  
  8.     var imgWidth = oImgs[0].width;  
  9.     var gIndex = 0 
  10.     begainAnimate();  
  11.     // 綁定左右點擊事件  
  12.     oLeft.onclick = function () {  
  13.         clearTimeout(timeout);  
  14.         leftMove();  
  15.         begainAnimate();  
  16.     };  
  17.     oRight.onclick = function () {  
  18.         clearTimeout(timeout);  
  19.         rightMove();  
  20.         begainAnimate();  
  21.     };  
  22.     // 綁定數字序號事件  
  23.     oButton.onclick = function (event) {  
  24.         clearTimeout(timeout);  
  25.         var targetEl = event.target;  
  26.         var nextIndex = (+targetEl.innerText) - 1;  
  27.         console.log(nextIndex);  
  28.         rightMove(nextIndex);  
  29.         begainAnimate();  
  30.     }  
  31.     // 默認初始動畫朝右邊  
  32.     function begainAnimate() {  
  33.         clearTimeout(timeout);  
  34.         timeout = setTimeout(function () {  
  35.             rightMove();  
  36.             begainAnimate();  
  37.         }, 3000);  
  38.     }  
  39.     // 向左移動動畫  
  40.     function leftMove() {  
  41.         var nextIndex = (gIndex - 1 < 0) ? oImgs.length - 1 : gIndex - 1;  
  42.         animateSteps(nextIndex, -50);  
  43.     }  
  44.     // 向右移動動畫  
  45.     function rightMove(nextIndex) {  
  46.         if (nextIndex == undefined) {  
  47.             nextIndex = (gIndex + 1 >= oImgs.length) ? 0 : gIndex + 1;  
  48.         }  
  49.         animateSteps(nextIndex, 50);  
  50.     }  
  51.     // 一次動畫  
  52.     function animateSteps(nextIndex, timestamp) {  
  53.         var currentImg = oImgs[gIndex];  
  54.         var nextImg = oImgs[nextIndex];  
  55.         nextImg.style.zIndex = 10 
  56.         var step = 0 
  57.         requestAnimationFrame(goStep);  
  58.         // 走一幀的動畫,移動timestamp  
  59.         function goStep() {  
  60.             var moveWidth = timestamp * step++;  
  61.             if (Math.abs(moveWidth) < imgWidth) {  
  62.                 currentImg.style.transform = `translate(${moveWidth}px)`;  
  63.                 nextImg.style.transform = `translate(${moveWidth > 0 ? (moveWidth - imgWidth) : (imgWidth + moveWidth)}px)`;  
  64.                 requestAnimationFrame(goStep);  
  65.             } else {  
  66.                 currentImg.style.zIndex = 1 
  67.                 currentImg.style.transform = `translate(0px)`;  
  68.                 nextImg.style.transform = `translate(0px)`;  
  69.                 oButtons[gIndex].setAttribute('class', '');  
  70.                 oButtons[nextIndex].setAttribute('class', 'active');  
  71.                 gIndex = nextIndex 
  72.             }  
  73.         }  
  74.     }  
  75.  
  76. window.onclose = function () {  
  77.     clearTimeout(timeout);  

css布局樣式 

  1. <style>  
  2.     /* 首先設置圖片box的區域,將圖片重疊在一起  */  
  3.     header {  
  4.         width: 100%;  
  5.         position: relative;  
  6.         overflow: hidden;  
  7.     }  
  8.     .box {  
  9.         width: 100%;  
  10.         height: 300px;  
  11.     }  
  12.     .box img {  
  13.         width: 100%;  
  14.         height: 100%;  
  15.         position: absolute;  
  16.         transform: translateX(0);  
  17.         z-index: 1; 
  18.      }  
  19.     .box img:first-child {  
  20.         z-index: 10;  
  21.     }    
  22.     /* 數字序列按鈕 */  
  23.     .buttons {  
  24.         position: absolute;  
  25.         right: 10%;  
  26.         bottom: 5%;  
  27.         display: flex;  
  28.         z-index: 100;  
  29.     }  
  30.     .buttons div {  
  31.         width: 30px;  
  32.         height: 30px;  
  33.         background-color: #aaa;  
  34.         border: 1px solid #aaa;  
  35.         text-align: center;  
  36.         margin: 10px;  
  37.         cursor: pointer;  
  38.         opacity: .7;  
  39.         border-radius: 15px;  
  40.         line-height: 30px;  
  41.     }  
  42.     .buttons div.active {  
  43.         background-color: white;  
  44.     }  
  45.     /* 左右切換按鈕 */  
  46.     .left,  
  47.     .right {  
  48.         position: absolute;  
  49.         width: 80px;  
  50.         height: 80px;  
  51.         background-color: #ccc;  
  52.         z-index: 100;  
  53.         top: 110px;  
  54.         border-radius: 40px;  
  55.         opacity: .5;  
  56.         cursor: pointer;  
  57.     }  
  58.     .left {  
  59.         left: 2%;  
  60.     } 
  61.     .right {  
  62.         right: 2%;  
  63.     }  
  64.     .left .arrow {  
  65.         width: 30px;  
  66.         height: 30px;  
  67.         border-left: solid 5px #666;  
  68.         border-top: solid 5px #666;  
  69.         transform: translate(-5px, 25px) rotate(-45deg) translate(25px, 25px); 
  70.      }  
  71.     .right .arrow {  
  72.         width: 30px;  
  73.         height: 30px;  
  74.         border-left: solid 5px #666;  
  75.         border-top: solid 5px #666;  
  76.         transform: translate(50px, 25px) rotate(135deg) translate(25px, 25px);  
  77.     }  
  78. </style>  

 

責任編輯:龐桂玉 來源: segmentfault
相關推薦

2012-05-10 14:02:46

jQuery

2015-07-17 13:15:40

Swift版幻燈無限滾動

2012-05-02 13:53:00

JavaScript

2023-09-07 07:35:59

JS操作網頁

2024-06-20 08:42:45

2025-09-19 08:13:42

2015-05-28 10:20:34

js相冊翻頁

2015-05-07 15:13:22

JS實現JQueryJQuery

2025-07-02 03:00:00

2022-09-20 11:00:14

Vue3滾動組件

2019-12-11 10:50:06

JS圖片前端

2013-04-02 13:04:07

ListView平滑滾

2021-06-18 10:12:09

JS代碼前端

2022-07-12 08:32:17

transition跑馬燈

2011-09-02 10:14:10

JQuery滾動Xslider

2012-08-10 09:46:53

jQuery

2022-04-06 18:29:58

CSSJS輸入框

2021-02-11 13:56:21

JSweb插件

2023-11-22 07:47:34

2025-03-19 09:00:00

JavaScript代碼無限滾動
點贊
收藏

51CTO技術棧公眾號

久久久久久国产精品日本| 久久综合久久久| 久久国产在线视频| 老司机aⅴ在线精品导航| 日本高清成人免费播放| 久久精品国产精品亚洲精品色| 国产高清视频免费观看| 国产精品久久久久久久久久妞妞| 国产香蕉一区二区三区在线视频| 亚洲一区二区福利视频| av丝袜在线| 中文字幕不卡在线| 国产日韩三区| 国产精品特级毛片一区二区三区| 99精品福利视频| 波霸ol色综合久久| 亚洲av片不卡无码久久| 成人动漫视频在线观看| 色综合咪咪久久| 蜜臀av性久久久久蜜臀av| 男人天堂网在线| 久久99精品国产| 欧美亚洲视频在线看网址| 日本综合在线观看| 偷拍视屏一区| 精品国产乱码久久久久久影片| 国产一线二线三线在线观看| heyzo一区| 亚洲精品久久久久久国产精华液| 日本一区二区免费看| 亚洲欧美强伦一区二区| 极品少妇xxxx偷拍精品少妇| 日韩av片免费在线观看| 精品少妇久久久| 亚洲xxx拳头交| 国产一区二区三区18| 污污污www精品国产网站| 国产一区二区三区精品在线观看| 日本韩国视频一区二区| 成人毛片一区二区| 国模私拍视频在线播放| 亚洲摸摸操操av| 伊人久久大香线蕉成人综合网| 男人的天堂在线视频| eeuss鲁片一区二区三区在线观看| 91影视免费在线观看| 中国a一片一级一片| 久久男女视频| 国产成人精品999| 国产成人综合欧美精品久久| 激情六月综合| 国产综合在线视频| 久久久久久久极品内射| 亚洲综合自拍| 久久91精品国产91久久跳| 一级片一级片一级片| 日韩一区二区在线免费| 丝袜一区二区三区| 国产在线免费看| 一本到12不卡视频在线dvd| 少妇久久久久久| 日本二区三区视频| 天天超碰亚洲| 欧美猛男性生活免费| 久草免费在线视频观看| 18成人免费观看视频| 国自产精品手机在线观看视频| 日本在线视频中文字幕| 亚洲一级在线| 国产精品久久久久久久9999| 亚洲综合免费视频| 国产一区二区在线观看免费| 国产精品国产亚洲精品看不卡15| 免费a视频在线观看| 97精品久久久久中文字幕| 久久久久久欧美精品色一二三四| 麻豆国产在线播放| 国产精品乱码一区二区三区软件 | 女一区二区三区| 亚洲精品久久7777777| 全黄一级裸体片| 欧美gayvideo| 久久久久久久久国产| 人人干人人干人人干| 日韩国产精品久久久| 成人黄色免费片| 囯产精品久久久久久| 91尤物视频在线观看| 少妇免费毛片久久久久久久久| 九色porny在线| 亚洲福利国产精品| 色七七在线观看| 日本免费一区二区三区视频| 日韩成人在线视频观看| 天天操天天摸天天舔| 合欧美一区二区三区| 国产成人久久久精品一区| 国产女人爽到高潮a毛片| 成人一区二区三区视频| 日韩欧美一区二区三区久久婷婷| caoporm免费视频在线| 精品国产老师黑色丝袜高跟鞋| 中文字幕网av| 欧美调教视频| 久久视频中文字幕| chinese国产精品| 国产成人亚洲综合a∨猫咪| 九色一区二区| av在线免费观看网址| 日韩欧美精品在线观看| 热久久久久久久久| 亚洲区小说区| 欧美激情videos| 日批视频免费观看| 99久久亚洲一区二区三区青草| 亚洲欧美日韩精品在线| free性m.freesex欧美| 8x8x8国产精品| 欧美做受高潮6| 国产欧美三级| 国产精品日韩高清| 大片免费在线观看| 欧美三级电影在线观看| 国产肉体xxxx裸体784大胆| 午夜日韩在线| 成人精品在线观看| 在线观看麻豆| 在线视频亚洲一区| av在线网站观看| 在线日韩中文| 超碰在线97av| 亚洲综合影视| 欧美一级黄色大片| 国产第一页浮力| 久久国产人妖系列| 性欧美大战久久久久久久免费观看| 午夜不卡影院| 日韩av在线看| 中文字幕免费在线观看视频| 成人一区二区三区视频在线观看| 在线观看污视频| 亚洲免费看片| 久久亚洲精品一区二区| 亚洲最新av网站| 中文字幕中文字幕在线一区| 久久久久国产一区| 日韩成人激情| 国产精品视频网站| 日本在线免费看| 欧美男生操女生| 日本午夜在线观看| 国产九九视频一区二区三区| 艳母动漫在线观看| 欧美黄色一级| 欧美激情一区二区三区久久久| 亚洲精品97久久中文字幕无码| 一区二区三区鲁丝不卡| 欧美日韩一区二区区别是什么| 欧美在线亚洲| 超碰在线97av| 中文字幕在线看片| 一区二区三欧美| 在线免费观看高清视频| 国产精品高潮久久久久无| 午夜视频在线观| 国精品一区二区三区| 国语精品中文字幕| 成人欧美大片| www.亚洲人.com| 午夜精品一区二区三| 午夜欧美一区二区三区在线播放| 给我免费观看片在线电影的| 天堂资源在线中文精品| 亚洲巨乳在线观看| 亚洲经典视频| 欧美自拍视频在线| 色哟哟免费在线观看| 日韩亚洲欧美在线观看| 成年免费在线观看| 国产三级精品视频| 超碰在线免费av| 国产欧美在线| 亚洲一区二区三区免费看| 亚洲超碰在线观看| 国产成人精品综合久久久| a免费在线观看| 国产视频精品一区二区三区| 一级二级三级视频| 亚洲成年人网站在线观看| 国产精品密蕾丝袜| 狠狠色综合日日| 1024av视频| 2023国产精品久久久精品双| 国产精选一区二区| 成人国产在线| 98视频在线噜噜噜国产| 天堂中文8资源在线8| 精品成人a区在线观看| 欧美 亚洲 另类 激情 另类| 亚洲午夜影视影院在线观看| 国产激情av在线| a级高清视频欧美日韩| 超碰在线97免费| 亚洲欧洲综合| 中文字幕一区二区三区5566| 夜色77av精品影院| yellow视频在线观看一区二区| 亚洲成人短视频| 久久久噜久噜久久综合| 日本视频在线观看| 亚洲色图激情小说| 涩涩视频免费看| 欧美一区二区国产| 中文字幕第2页| 欧美性xxxxx极品娇小| 麻豆疯狂做受xxxx高潮视频| 国产欧美一区二区精品秋霞影院| 99热超碰在线| 国产精品一区在线| 色一情一区二区三区| 麻豆九一精品爱看视频在线观看免费| 8x8ⅹ国产精品一区二区二区| 日韩电影二区| 日韩免费av一区二区三区| 日韩av不卡一区| 国产伦精品一区二区三区高清版| 成人在线日韩| 国产综合久久久久| 免费成人毛片| 国产精品视频xxx| 亚洲a∨精品一区二区三区导航| 97精品视频在线播放| 国内老司机av在线| 欧美精品videosex极品1| 二区三区四区高清视频在线观看| 中文字幕免费精品一区| 狠狠狠综合7777久夜色撩人| 亚洲免费高清视频| 婷婷国产在线| 精品视频久久久久久| 头脑特工队2在线播放| 亚洲精品720p| 亚洲aⅴ乱码精品成人区| 亚洲韩国欧洲国产日产av| 亚洲欧美激情另类| 亚洲福利精品在线| 亚洲人视频在线观看| 亚洲精品美女网站| 色哟哟在线观看| 亚洲色图激情小说| 国产在线视频你懂得| 国产一区二区日韩精品欧美精品| 成人午夜在线观看视频| 在线日韩av观看| 伦xxxx在线| 欧美精品在线视频观看| 日本动漫同人动漫在线观看| 久久久久久国产三级电影| 欧美少妇网站| 国产91色在线播放| av成人亚洲| 91亚洲永久免费精品| 2023国产精华国产精品| 国产成人看片| 天海翼亚洲一区二区三区| 区一区二区三区中文字幕| 日韩成人精品一区| 8x8ⅹ国产精品一区二区二区| 亚洲激情专区| 成人性视频欧美一区二区三区| 免费久久精品视频| 视频区 图片区 小说区| 成人午夜又粗又硬又大| 黄色正能量网站| 国产精品久久免费看| 亚洲综合网在线| 狠狠色狠狠色综合日日五| 制服丝袜在线一区| 日韩精品专区在线影院重磅| 四虎影视精品成人| 俺也去精品视频在线观看| 免费毛片在线看片免费丝瓜视频 | 国产精品成人av久久| 欧美日韩在线免费| 一区二区不卡视频在线观看| 欧美成人伊人久久综合网| 青青草观看免费视频在线| 日韩亚洲精品电影| 久草免费在线视频| 成人性生交大片免费看视频直播 | 成人在线高清| 国产精品二区在线| 精品毛片免费观看| 欧美黑人在线观看| 免费欧美日韩国产三级电影| 日本一区二区免费视频| 中文字幕的久久| 日本熟妇毛茸茸丰满| 欧美剧情电影在线观看完整版免费励志电影 | 青青草华人在线视频| 亚洲成人久久影院| 在线免费观看中文字幕| 亚洲国产一区二区三区四区| 国产精品久久久久久福利| 91高清在线免费观看| 疯狂欧洲av久久成人av电影 | 亚洲电影在线一区二区三区| 日本精品一区在线观看| 国产成人综合网| 中文字幕精品亚洲| 欧美丝袜第一区| 亚洲av无码乱码国产麻豆| 中文字幕视频一区二区在线有码| av2020不卡| 97超级碰碰| 97精品一区| 污网站免费在线| 久久久久国产一区二区三区四区| 久久久久亚洲AV| 欧美高清hd18日本| 成全电影播放在线观看国语| 26uuu另类亚洲欧美日本老年| 日本一区二区乱| 日本福利视频导航| 免费观看成人鲁鲁鲁鲁鲁视频| 一级特级黄色片| 一级中文字幕一区二区| 国产精品永久久久久久久久久| 夜夜躁日日躁狠狠久久88av| 激情都市亚洲| 蜜桃传媒视频麻豆第一区免费观看| 国产在线日韩| 最新中文字幕日本| 亚洲永久精品大片| 成人av免费播放| 欧美日本啪啪无遮挡网站| 亚洲91在线| 国产福利片一区二区| 久久se精品一区精品二区| 亚洲一二三四视频| 精品视频999| 日本综合在线| 成人国产精品久久久| 99久久夜色精品国产亚洲狼| 中文字幕 91| 国产精品盗摄一区二区三区| 中文字幕乱码人妻二区三区| 在线成人免费网站| 99综合99| 成人黄色片免费| 成人性视频免费网站| 久久精品国产av一区二区三区| 精品国产成人在线影院| 国产伦理精品| 久久综合福利| 久久婷婷麻豆| 成人18视频免费69| 日韩欧美一区中文| gogo久久| 日韩av一区二区三区在线| 日韩高清一区二区| 在线观看黄网址| 日韩午夜在线观看| 久草在线资源福利站| 日韩一区免费观看| 激情都市一区二区| 久一区二区三区| 亚洲人成网站777色婷婷| 久久亚洲国产精品尤物| 麻豆视频传媒入口| 91香蕉视频在线| 自拍偷拍色综合| 欧美激情精品久久久久久蜜臀| 欧美日韩一区二区三区四区不卡| 丁香啪啪综合成人亚洲 | 亚洲激情视频一区| 亚洲欧美在线一区| 欧美特黄色片| 欧美日韩不卡在线视频| 91女人视频在线观看| 又骚又黄的视频| 欧美精品videossex88| 女厕嘘嘘一区二区在线播放 | 欧美三级在线观看视频| 久久久av毛片精品| 亚洲成人777777| 国产精品免费久久久久影院| 欧美久久一级| av电影在线不卡| 精品乱人伦小说| 福利视频亚洲| aa在线观看视频| 国产精品国产三级国产aⅴ入口| 人人妻人人澡人人爽精品日本| 国产精品女人久久久久久| 欧美日本精品| 欧美亚洲色综久久精品国产 | 国产福利第一视频在线播放| 亚洲一区精品电影| 日韩av不卡一区二区|