本文主要講述關(guān)于js實現(xiàn)上下滑動輪播的具體代碼,希望對大家有幫助。具體內(nèi)容如下
一、效果圖
二、設(shè)計思路
第一步:要在經(jīng)過所有的元素讓鼠標點擊右側(cè)小圖時,圖片至少變亮且根據(jù)偏移值加上紅框。點擊右邊的小圖左邊出現(xiàn)對用的圖片。
第二步:也可以進入循環(huán)計時器,復(fù)制ul里面的第一個元素這樣可以不斷的連續(xù)循環(huán)滑動。
第三步:當(dāng)鼠標進入時讓循環(huán)滑動停止,鼠標移動開時繼續(xù)。
第四步:設(shè)置上下按鈕,當(dāng)?shù)谝粡垐D片的offsetTop值為0時,下面按鈕出現(xiàn),當(dāng)?shù)竭_底部最后一個元素時,上面按鈕出現(xiàn),底部按鈕消失,當(dāng)在整個元素中間時,上下按鈕都出現(xiàn),每點擊一次按鈕移動一個格子,左邊圖片也對應(yīng)改變。
三、核心代碼
//找到right-btn 元素添加事件 var righttBtnList; var Line; var transy = 0; var liHeight = 430; var ulItem; var count = 0; var timer; var speed = 2000; var Item; var ItemMenu; var offsetTop = 0; var itemtabinfo, topBtn, bottomBtn; window.onload = function () { righttBtnList = document.getElementsByClassName("right-btn"); Line = document.getElementsByClassName("line")[0]; ulItem = document.getElementsByClassName("item-child-ul")[0]; Item = document.getElementsByClassName("item-list")[0]; ItemMenu = document.getElementsByClassName("item-menu")[0]; itemtabinfo = document.getElementsByClassName("item-tab-info")[0]; topBtn = document.getElementsByClassName("top-btn")[0]; bottomBtn = document.getElementsByClassName("bottom-btn")[0]; //默認復(fù)制第一張?zhí)砑拥絬lItem之中 ulItem.appendChild(ulItem.children[0].cloneNode(true)); //設(shè)置itemtabinfo 默認移動值 itemtabinfo.style.transform = "translateY(" + offsetTop + "px)"; //直接默認啟動計時器 Animate(); //遍歷所有的li添加事件 for (var i = 0; i < righttBtnList.length; i++) { righttBtnList[i].index = i; righttBtnList[i].onclick = function () { //點擊當(dāng)前移除top-white if (checkClass(this, 'top-white')) { this.classList.remove("top-white"); //其余的添加 addWhite(this.index); } //獲取偏移值 Line.style.top = ((this.index * 110 + 10) + offsetTop) + "px"; //輸出當(dāng)前點擊的索引 ulItem.style.transform = "translateY(" + (-this.index * liHeight) + "px)"; //用戶點擊的索引 對應(yīng)count值 count = this.index; } } Item.onmouseenter=function(){ clearTimeout(timer); } Item.onmouseleave=function(){ Animate(); } topBtn.onclick = function () { offsetTop += 110; //獲取原來的top var oldTop = parseFloat(Line.style.top); Line.style.top = (oldTop + 110) + "px"; itemtabinfo.style.transform = "translateY(" + offsetTop + "px)"; checkBtnShow(); } bottomBtn.onclick = function () { offsetTop -= 110; //獲取原來的top var oldTop = parseFloat(Line.style.top); //只能取到行內(nèi)樣式 Line.style.top = (oldTop - 110) + "px"; itemtabinfo.style.transform = "translateY(" + offsetTop + "px)"; checkBtnShow(); } ItemMenu.onmouseenter = function () { checkBtnShow(); } function checkBtnShow() { if (offsetTop == 0) { //下面按鈕出現(xiàn) bottomBtn.classList.add("showBottom"); topBtn.classList.remove("showTop"); } else if (offsetTop == -220) { //上面按鈕出現(xiàn) topBtn.classList.add("showTop"); bottomBtn.classList.remove("showBottom"); } else { //兩個按鈕同時出現(xiàn) bottomBtn.classList.add("showBottom"); topBtn.classList.add("showTop"); } } ItemMenu.onmouseleave = function () { bottomBtn.classList.remove("showBottom"); topBtn.classList.remove("showTop"); } //檢測是否具有top-white function checkClass(obj,className){ return obj.classList.contains(className); } //其余的li添加 function addWhite(index){ for(var i=0;i<righttBtnList.length;i++){ if(i!=index){ righttBtnList[i].classList.add("top-white"); } } } //啟動計時器動畫 function Animate(){ //寫執(zhí)行代碼 timer=setInterval(function(){ if (timer) clearInterval(timer); if(!ulItem.classList.contains("transY")){ ulItem.classList.add("transY"); } count++; ulItem.style.transform="translateY("+(-count*liHeight)+"px)"; //找出當(dāng)前每一張圖動畫完成時間 setTimeout(function(){ if(count>=ulItem.children.length-1){ count=0; //移除過渡類 ulItem.classList.remove("transY"); ulItem.style.transform="translateY(0px)"; } //讓右邊的元素動畫對應(yīng) //rigthBtnlist[count].click(); },500) },speed) } }
上面是全部代碼內(nèi)容,歡迎大家多多關(guān)注。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/128011.html
摘要:效果實現(xiàn)原理純粹只使用了發(fā)現(xiàn)還是比較簡單的,并不需要借助別的插件或類庫來實現(xiàn)核心是把圖片組合成一行序列,通過左右移動,以及父元素的來決定顯示的圖片簡單畫了一下搭建基本界面這里主要分成三個部分,兩個向左向右的箭頭,圓點序列,圖片序列全 效果 showImg(https://segmentfault.com/img/bVbqHhE?w=479&h=235); 實現(xiàn)原理 純粹只使用了html...
摘要:效果實現(xiàn)原理純粹只使用了發(fā)現(xiàn)還是比較簡單的,并不需要借助別的插件或類庫來實現(xiàn)核心是把圖片組合成一行序列,通過左右移動,以及父元素的來決定顯示的圖片簡單畫了一下搭建基本界面這里主要分成三個部分,兩個向左向右的箭頭,圓點序列,圖片序列全 效果 showImg(https://segmentfault.com/img/bVbqHhE?w=479&h=235); 實現(xiàn)原理 純粹只使用了html...
摘要:效果實現(xiàn)原理純粹只使用了發(fā)現(xiàn)還是比較簡單的,并不需要借助別的插件或類庫來實現(xiàn)核心是把圖片組合成一行序列,通過左右移動,以及父元素的來決定顯示的圖片簡單畫了一下搭建基本界面這里主要分成三個部分,兩個向左向右的箭頭,圓點序列,圖片序列全 效果 showImg(https://segmentfault.com/img/bVbqHhE?w=479&h=235); 實現(xiàn)原理 純粹只使用了html...
摘要:其次父組件中負責(zé)通用的功能,以及輪播的整體架構(gòu),其結(jié)構(gòu)如下。下面的是一種移動端的適配方案。接下來實現(xiàn)函數(shù)運用動畫切換到指定下標的子項到此為止,咱們就已經(jīng)完成了一個初步的滑動切換輪播圖的功能了。 前言 昨天寫了一篇側(cè)邊菜單組件的文章,閱讀人數(shù)挺多的,內(nèi)心很欣喜(偷著樂,第一篇文章有這么多人看)!乘著這股勁,今天在繼續(xù)寫一篇我們平時工作中更常用的滑動輪播組件的文章。 效果展示 老規(guī)矩,咱們...
閱讀 547·2023-03-27 18:33
閱讀 732·2023-03-26 17:27
閱讀 630·2023-03-26 17:14
閱讀 591·2023-03-17 21:13
閱讀 521·2023-03-17 08:28
閱讀 1801·2023-02-27 22:32
閱讀 1292·2023-02-27 22:27
閱讀 2178·2023-01-20 08:28