使用js實現(xiàn)輪播圖旋轉(zhuǎn)木馬效果?很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來學(xué)習(xí)下,希望你能有所收獲。
創(chuàng)新互聯(lián)是一家集網(wǎng)站建設(shè),稱多企業(yè)網(wǎng)站建設(shè),稱多品牌網(wǎng)站建設(shè),網(wǎng)站定制,稱多網(wǎng)站建設(shè)報價,網(wǎng)絡(luò)營銷,網(wǎng)絡(luò)優(yōu)化,稱多網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強企業(yè)競爭力。可充分滿足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時我們時刻保持專業(yè)、時尚、前沿,時刻以成就客戶成長自我,堅持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實用型網(wǎng)站。思路:給定一個數(shù)組,儲存每張圖片的位置,旋轉(zhuǎn)將位置進(jìn)行替換
左旋轉(zhuǎn):將數(shù)組第一個數(shù)據(jù)刪除,然后添加到數(shù)組的最后
右旋轉(zhuǎn):將數(shù)組最后一個數(shù)據(jù)刪除,然后添加到數(shù)組的開頭
先附上效果圖,再來實現(xiàn)
接下來就是最主要的,封裝原生js動畫函數(shù)
//封裝函數(shù)獲取任意一個元素的任意屬性的值(兼容ie8) function getStyle(element, attr) { return window.getComputedStyle ? window.getComputedStyle(element, null)[attr] : element.currentStyle[attr]; } //封裝js變速動畫 function animate(element, json, fn) { //每次啟動定時器之前先停止 clearInterval(element.tmId); element.tmId = setInterval(function () { var flag = true; //遍歷對象中的每個屬性 for (var attr in json) { //執(zhí)行透明度動畫 if (attr == "opacity") { //獲取當(dāng)前元素的屬性值 var current = parseInt(getStyle(element, attr)*100); //獲取目標(biāo)值 var target = json[attr]*100; //移動的步數(shù) var step = (target - current) / 10; step = step > 0 ? Math.ceil(step) : Math.floor(step); //移動后的值 current += step; element.style[attr] = current / 100; } else if (attr == "zIndex") { //改變層級屬性 element.style[attr] = json[attr]; } else { //獲取當(dāng)前元素的屬性值 var current = parseInt(getStyle(element, attr)); //獲取目標(biāo)值 var target = json[attr]; //移動的步數(shù) var step = (target - current) / 10; step = step > 0 ? Math.ceil(step) : Math.floor(step); //移動后的值 current += step; element.style[attr] = current + "px"; if (current != target) { flag = false; } } } if (flag) { clearInterval(element.tmId); //如果有回調(diào)函數(shù)就調(diào)用 if (fn) fn(); } // 測試 // console.log("目標(biāo):" + target + "/當(dāng)前:" + current + "/步數(shù):" + step); }, 20); }