JavaScript實(shí)現(xiàn)首頁(yè)圖片輪播圖效果
一、輪番圖
效果展示:
輪播圖是指在一個(gè)模塊或者窗口,通過(guò)鼠標(biāo)點(diǎn)擊或手指滑動(dòng)后,可以看到多張圖片。這些圖片統(tǒng)稱(chēng)為輪播圖,這個(gè)模塊叫做輪播模塊。
二、源碼展示
設(shè)置body
<body> <div class="m-view"> <div class="slide" style="left: -800px"> <img src="1.jpg" alt="4"> <img src="2.jpg" alt="0"> <img src="3.jpg" alt="1"> <img src="4.jpg" alt="2"> <img src="5.jpg" alt="3"> <img src="3.jpg" alt="4"> <img src="2.jpg" alt="0"> </div> <div class="prev"><</div> <div class="next">></div> <div class="pointer"> <span class="button on" index="0"></span> <span class="button" index="1"></span> <span class="button" index="2"></span> <span class="button" index="3"></span> <span class="button" index="4"></span> </div> </div>
樣式設(shè)置
<style> .m-view,.m-view .slide img{ position: relative;/*作為絕對(duì)定位的父元素*/ width: 500px; height: 300px; } .m-view{ overflow: hidden;/*將超出該div的子元素隱藏*/ } .m-view .slide{ position: absolute; width: 500px; height: 300px; } .m-view .slide img{ margin-right: -5px; } .m-view .prev,.m-view .next{ position: absolute; top: 40%; font: 60px/60px Microsoft YaHei; color: #00BFFF; } .m-view .prev{ left: 10px; } .m-view .next{ right: 10px; } .m-view .pointer{ position: absolute; bottom: 40px; left: 33%; } .m-view .pointer span{ display: inline-block;/*水平排列*/ width: 40px; height: 40px; border-radius: 20px; margin-right: 10px; background-color: #00FF00; } .m-view .pointer .on{/*點(diǎn)亮當(dāng)前圖片對(duì)應(yīng)的圓圈*/ background-color: #1E90FF; } img{ object-fit: contain; } </style>
實(shí)現(xiàn)輪番
var view=document.getElementsByClassName('m-view')[0]; var slide=document.getElementsByClassName('slide')[0]; var prev=document.getElementsByClassName('prev')[0]; var next=document.getElementsByClassName('next')[0]; var button=document.getElementsByClassName('button'); var curIndex=0;//當(dāng)前圖片的索引位置 var toggled=true;//是否正在切換,true表明切換已完成,此時(shí)才能切換 /* Toggle函數(shù)實(shí)現(xiàn)切換一張圖片的功能 */ function Toggle () { var TIMER=50;//滑動(dòng)一次所用的時(shí)間,它是setInterval的第二個(gè)參數(shù) var time=800;//每切換一張圖片總共用的時(shí)長(zhǎng) var times=time/TIMER;//每切換一張圖片需滑動(dòng)的次數(shù) var stepLenth=800/times;//每次滑動(dòng)的步長(zhǎng) var leftToggle=function () { var t1=times; function leftStep(){ slide.style.left=parseInt(slide.style.left)+stepLenth+"px"; t1--; if (!t1) { clearInterval(interval); curIndex--; if (curIndex<0) { slide.style.left=parseInt(slide.style.left)-4000+"px"; curIndex=4; }; toggled=true; }; }; if (toggled==true) { toggled=false; button[curIndex].className="button"; if (curIndex!=0) { button[curIndex-1].className="button on"; }else{ button[curIndex+4].className="button on"; } var interval=setInterval(leftStep,TIMER); }; }; var rightToggle=function () { var t2=times; function leftStep(){ slide.style.left=parseInt(slide.style.left)-stepLenth+"px"; t2--; if (!t2) { clearInterval(interval); curIndex++; if (curIndex>4) { slide.style.left=parseInt(slide.style.left)+4000+"px"; curIndex=0; }; toggled=true; }; }; if (toggled==true) { toggled=false; button[curIndex].className="button"; if (curIndex!=4) { button[curIndex+1].className="button on"; }else{ button[curIndex-4].className="button on"; }; var interval=setInterval(leftStep,TIMER); }; } this.leftToggle=leftToggle;//輸出對(duì)外的接口 this.rightToggle=rightToggle; }; var toggle=new Toggle(); prev.onclick=function () { toggle.leftToggle(); }; next.onclick=function () { toggle.rightToggle(); }; /* 點(diǎn)擊圓圈跳轉(zhuǎn)功能 */ for (var i = 0; i < button.length; i++) { button[i].onclick=function () { var newIndex=parseInt(this.getAttribute("index")); if (newIndex!=curIndex) { var distance=-800*(newIndex-curIndex); slide.style.left=parseInt(slide.style.left)+distance+"px"; button[curIndex].className="button"; button[newIndex].className="button on"; curIndex=newIndex; }; }; } /* 自動(dòng)播放功能,鼠標(biāo)移上去停止播放,移開(kāi)再次播放 */ var intervalo=setInterval(toggle.rightToggle,3000); view.onmouseover=function () { clearInterval(intervalo); } view.onmouseout=function () { intervalo=setInterval(toggle.rightToggle,3000); }
到此這篇關(guān)于JavaScript實(shí)現(xiàn)首頁(yè)圖片輪播圖效果的文章就介紹到這了,更多相關(guān)js 輪播圖內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
location.href語(yǔ)句與火狐不兼容的問(wèn)題
在寫(xiě)JS跳轉(zhuǎn)語(yǔ)句的過(guò)程中,發(fā)現(xiàn)這么一個(gè)問(wèn)題,location.href語(yǔ)句與火狐不兼容的問(wèn)題2010-07-07js表單元素checked、radio被選中的幾種方法(詳解)
下面小編就為大家?guī)?lái)一篇js表單元素checked、radio被選中的幾種方法(詳解)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-08-08通過(guò)隱藏iframe實(shí)現(xiàn)無(wú)刷新上傳文件操作
本文給大家介紹iframe無(wú)刷新上傳文件,通過(guò)一個(gè)隱藏的iframe來(lái)處理上傳操作我采用的是ReactJS,amazeui,nodejs1.html target指向iframe的name,就是把上傳后的操作交給iframe來(lái)處理2016-03-03完美實(shí)現(xiàn)js焦點(diǎn)輪播效果(二)(圖片可滾動(dòng))
這篇文章主要為大家詳細(xì)介紹了完美實(shí)現(xiàn)js焦點(diǎn)輪播效果的相關(guān)代碼,采用輔助圖片實(shí)現(xiàn)圖片無(wú)限滾動(dòng),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-03-03javascript比較兩個(gè)日期相差天數(shù)的方法
這篇文章主要介紹了javascript比較兩個(gè)日期相差天數(shù)的方法,涉及javascript針對(duì)日期的轉(zhuǎn)換與數(shù)學(xué)運(yùn)算相關(guān)技巧,非常簡(jiǎn)單實(shí)用,需要的朋友可以參考下2015-07-07XMLHttpRequest對(duì)象_Ajax異步請(qǐng)求重點(diǎn)(推薦)
下面小編就為大家?guī)?lái)一篇XMLHttpRequest對(duì)象_Ajax異步請(qǐng)求重點(diǎn)(推薦)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-09-09JavaScript 嚴(yán)格模式(use strict)用法實(shí)例分析
這篇文章主要介紹了JavaScript 嚴(yán)格模式(use strict)用法,結(jié)合實(shí)例形式分析了JavaScript 嚴(yán)格模式的基本功能、用法及操作注意事項(xiàng),需要的朋友可以參考下2020-03-03微信小程序?qū)崿F(xiàn)動(dòng)態(tài)驗(yàn)證碼
這篇文章主要為大家詳細(xì)介紹了微信小程序?qū)崿F(xiàn)動(dòng)態(tài)驗(yàn)證碼,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-05-05