我們在瀏覽網(wǎng)頁時(shí),會發(fā)現(xiàn)有一個(gè)功能經(jīng)常涉及到,那就是圖片輪播功能。那么JS如何實(shí)現(xiàn)輪播圖效果呢?這篇文章告訴你。
讓我們先來看看輪播圖效果是什么樣的。比如 W3Cschool官網(wǎng)中就可以看到輪播圖的應(yīng)用。
以下是具體的代碼:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>w3cschool-編程獅</title>
<!-- css樣式 -->
<style type="text/css">
/*清除邊距*/
div,ul,li{
margin: 0;
padding: 0;
}
/*首先準(zhǔn)備一個(gè)放圖片的容器*/
.container{
width: 500px;
height: 280px;
position: relative;
top: 100px;
left: 30%;
/*border: 1px solid #ccc;*/
}
/*圖片樣式*/
.container img{
position: absolute; /*把所有圖片放在同一個(gè)位置*/
width: 100%;
transition-duration: 0.5s; /*設(shè)置過渡時(shí)間*/
opacity: 0; /*把所有圖片變透明*/
}
/*圖片顯示開關(guān)*/
.container img.on{
opacity: 1; /*用于顯示圖片*/
}
/*左右按鈕 按鈕用圖片更好點(diǎn),這里為了簡便就用大于小于號*/
.left, .right{
position: absolute;
top: 30%;
width: 60px;
height: 100px;
line-height: 100px;
background-color: #666;
opacity: 0.5;
text-align: center;
font-size: 60px;
color: #ccc;
display: none; /*先隱藏按鈕*/
cursor: pointer; /*設(shè)置鼠標(biāo)懸停時(shí)的樣式*/
}
.left{
left: 0;
}
.right{
right: 0;
}
.container:hover .left, .container:hover .right{
display: block; /*鼠標(biāo)懸停才容器范圍內(nèi)時(shí)顯示按鈕*/
}
.left:hover, .right:hover{
color: #fff;
}
/*焦點(diǎn)*/
.container ul{
position: absolute;
bottom: 0;
max-width: 500px;
padding: 5px 200px;
}
.container ul li{
list-style: none;
float: left;
background-color: #ccc;
width: 10px;
height: 10px;
border-radius: 50%;
margin-left: 10px;
cursor: pointer;
}
.container ul li.active{
background-color: #282923; /*焦點(diǎn)激活時(shí)的樣式*/
}
</style>
</head>
<body>
<div class="container">
<!-- 先把第一張圖片顯示出來 -->
<img class="on" src="image/42.png" />
<img src="image/43.png" />
<img src="image/44.png" />
<img src="image/45.png" />
<!-- 左右切換 -->
<div class="left"><</div>
<div class="right">></div>
<!-- 焦點(diǎn) -->
<ul>
<li class="active"></li>
<li></li>
<li></li>
<li></li>
</ul>
</div>
<!-- js部分 -->
<script type="text/javascript">
//1、找到container下的所有img標(biāo)簽,li標(biāo)簽,左右按鈕
var aImgs = document.querySelectorAll('.container img');
var aLis = document.querySelectorAll('.container li');
var btnLeft = document.querySelector('.container .left');
var btnRight = document.querySelector('.container .right');
//點(diǎn)擊事件
//點(diǎn)擊按鈕圖片切換
var index = 0; //當(dāng)前圖片下標(biāo)
var lastIndex = 0;
btnRight.onclick = function(){
//記錄上一張圖片的下標(biāo)
lastIndex = index;
//清除上一張圖片的樣式
aImgs[lastIndex].className = '';
aLis[lastIndex].className = '';
index++;
index %= aImgs.length; //實(shí)現(xiàn)周期性變化
//設(shè)置當(dāng)前圖片的樣式
aImgs[index].className = 'on';
aLis[index].className = 'active';
}
//左邊按鈕類似
btnLeft.onclick = function(){
//記錄上一張圖片的下標(biāo)
lastIndex = index;
//清除上一張圖片的樣式
aImgs[lastIndex].className = '';
aLis[lastIndex].className = '';
index--;
if (index < 0) {
index = aImgs.length - 1;
}
//設(shè)置當(dāng)前圖片的樣式
aImgs[index].className = 'on';
aLis[index].className = 'active';
}
</script>
</body>
</html>
實(shí)現(xiàn)效果:
圖片素材:
以上就是JS實(shí)現(xiàn)輪播圖效果的全部教程。同學(xué)們可以動手進(jìn)行練習(xí),以鞏固該知識點(diǎn)。
更多JS效果:
- 網(wǎng)頁圖片滾動鼠標(biāo)經(jīng)過停止效果代碼 圖片滾動切換效果
- JS如何實(shí)現(xiàn)酷炫的煙花特效?(附源碼)
- 硬核在線表白神器?。?!用HTML+CSS+JavaScript即可實(shí)現(xiàn)。