JS輪播圖的實(shí)現(xiàn)方法2
本文實(shí)例為大家分享了JS輪播圖的實(shí)現(xiàn)代碼,供大家參考,具體內(nèi)容如下
需求:
自動(dòng)輪播,鼠標(biāo)移入輪播停止、移出繼續(xù),小圓點(diǎn)點(diǎn)擊切圖,左右箭頭切圖
效果圖:
![輪播圖]

思路:

將所有需要輪播的圖片橫向排列,可視區(qū)大小設(shè)置為只能顯示一張圖片,給容器設(shè)置移出隱藏后,可視區(qū)之外的部分被隱藏,這樣我們就只能看見(jiàn)一張圖片。
輪播實(shí)現(xiàn)是改變整個(gè)圖片畫(huà)幅的left值或者margin-left 值,當(dāng)點(diǎn)擊時(shí)移動(dòng)整個(gè)畫(huà)幅單個(gè)圖片的寬度即可實(shí)現(xiàn)滾動(dòng)到下一張。
后面功能實(shí)現(xiàn)順序依舊是寫(xiě)法一里的思路。
HTML部分:
<div id="banner"> <div class="w"> <!-- 左右箭頭--> <span class="iconfont icon-zuojiantou"></span> <span class="iconfont icon-youjiantou"></span> <!-- 輪播圖--> <ul > <li><img src="img/1.jpg" alt=""></li> <li><img src="img/2.jpg" alt=""></li> <li><img src="img/3.jpg" alt=""></li> </ul> <!-- /小圓點(diǎn)--> <ol id="circleContainer"> </ol> </div> </div>
CSS部分:
<style>
*{
margin: 0;
padding: 0;
list-style: none;
}
.w {
width: 1000px;
height: 600px;
margin: 100px auto 0;
position: relative;
overflow: hidden;
}
ul {
width: 1000%;
transition: all .5s ease-in-out;
}
ul li {
float: left;
width: 1000px;
}
ul li img {
width: 100%;
height: 600px;
}
.iconfont {
color: white;
position: absolute;
font-size: 30px;
top: calc(50% - 15px);
background-color: rgba(216, 216, 216, 0.23);
border-top-right-radius: 50%;
border-bottom-right-radius: 50%;
cursor: pointer;
}
.iconfont:hover {
color: palegreen;
}
.icon-zuojiantou {
left: 0;
}
.icon-youjiantou {
right: 0;
}
#circleContainer {
position: absolute;
bottom: 10px;
left: calc(50% - 30px);
}
#circleContainer li {
display: inline-block;
width: 20px;
height: 20px;
border-radius: 50%;
background-color: white;
margin-right: 5px;
}
#circleContainer .change {
background-color: palegreen;
}
</style>
JS部分:
<script>
let timer = setInterval(function () {
arrow_r.onclick();
},2000);
let w = document.querySelector(".w");
w.addEventListener("mouseenter",function () {
clearInterval(timer);
});
w.addEventListener("mouseleave",function () {
clearInterval(timer);
timer = setInterval(function () {
arrow_r.onclick();
},2000);
});
//獲取元素
let ul = document.querySelector("ul");
let ol = document.querySelector("#circleContainer");
let arrow_r = document.querySelector(".icon-youjiantou");
let arrow_l = document.querySelector(".icon-zuojiantou");
let ImgWidth = ul.children[0].offsetWidth;
let location_i = 0 ;
// 創(chuàng)建小圓點(diǎn) 動(dòng)態(tài)生成小圓點(diǎn),圖片增加時(shí)小圓點(diǎn)也隨之增加
for (let i = 0; i<ul.children.length;i++){
let li = document.createElement("li");
li.setAttribute("index",i);
li.addEventListener("click",function () {
let index = this.getAttribute("index");
move(ul,index);
location_i = index ;
});
ol.appendChild(li);
}
let liclone = ul.children[0].cloneNode(true);
ul.appendChild(liclone);
// 輪播函數(shù)
function move(targetObj,n) {
if (n === targetObj.children.length ) {
targetObj.style.marginLeft = "0px";
n = 0;
}
targetObj.style.marginLeft = -n * ImgWidth +"px";
for (let i =0 ;i<ol.children.length;i++){
ol.children[i].className = "";
}
n === 3 ? ol.children[0].className = "change": ol.children[n].className = "change";
}
ol.children[0].className = "change";
// 右箭頭點(diǎn)擊
arrow_r.onclick = function () {
if (location_i === 3) {
location_i = 0 ;
ul.style.marginLeft = "0px" ;
}
location_i++;
move(ul,location_i);
};
// 左箭頭點(diǎn)擊
arrow_l.addEventListener("click",function () {
if (location_i == 0) {
location_i = ul.children.length -1 ;
}
location_i--;
move(ul,location_i);
})
</script>
精彩專(zhuān)題分享:jQuery圖片輪播 JavaScript圖片輪播 Bootstrap圖片輪播
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
淺析創(chuàng)建javascript對(duì)象的方法
下面小編就為大家?guī)?lái)一篇淺析創(chuàng)建javascript對(duì)象的方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-05-05
javascript去除字符串中所有標(biāo)點(diǎn)符號(hào)和提取純文本的正則
這篇文章主要介紹了javascript去除字符串中所有標(biāo)點(diǎn)符號(hào)和提取純文本的正則,需要的朋友可以參考下2014-06-06
利用MutationObserver實(shí)現(xiàn)計(jì)算首屏?xí)r間
在前端開(kāi)發(fā)中,優(yōu)化頁(yè)面性能是至關(guān)重要的,計(jì)算首屏?xí)r間是衡量網(wǎng)頁(yè)性能的重要指標(biāo),本文將介紹如何使用MutationObserver來(lái)獲取首屏?xí)r間的最佳實(shí)踐,感興趣的可以了解下2023-07-07
js對(duì)象屬性名駝峰式轉(zhuǎn)下劃線(xiàn)的實(shí)例代碼
這篇文章主要介紹了js對(duì)象屬性名駝峰式轉(zhuǎn)下劃線(xiàn)的實(shí)例代碼,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-09-09
JavaScript實(shí)現(xiàn)購(gòu)物車(chē)圖片局部放大預(yù)覽效果
這篇文章主要為大家詳細(xì)介紹了JavaScript如何通過(guò)canvas簡(jiǎn)單實(shí)現(xiàn)購(gòu)物車(chē)圖片放大預(yù)覽效果,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2023-03-03
用window.onerror捕獲并上報(bào)Js錯(cuò)誤的方法
這篇文章主要介紹了用window.onerror捕獲并上報(bào)Js錯(cuò)誤的方法,需要的朋友可以參考下2016-01-01

