JS實現輪播圖效果(有詳細註釋)
輪播圖
這個程式碼是博主在學到DOM節點的屬性和方法後寫的,還沒有學習事件,所以可能會有些複雜,但對於初學者可以用來學習邏輯思路。
JS程式碼如下,有詳細註釋,html和css都是很基礎的程式碼,也放在文章末尾了。
效果展示:點我檢視頁面效果(圖片來源網路)
JS
//獲取圖片地址(自行更改)
let imgArr = ['./img/1.jpg', './img/2.jpg', './img/3.jpg', './img/4.jpg', './img/5.jpg', './img/6.jpg'];
//只有輪播效果,立即執行函式
(function(){
let i = 0;
setInterval(
function () {
i++;
i == imgArr.length ? i = 0 : "";
document.getElementsByClassName("box1")[0].src = `${imgArr[i]}`;
}, 1500
);
})();
//有輪播效果,並且能選擇到某張圖片
for (let index in imgArr) {
let doteEle = document.getElementsByClassName("dote")[0];
//建立圓點
doteEle.innerHTML += `<span οnclick="lun(${index})"></span>`;
}
//宣告j(必須在輪播函式外宣告,才能使用停止時間函式)
let j;
//輪播函式,要傳參
function lun(i) {
//獲取圓點
let spEle = document.getElementsByClassName("dote")[0].children;
//判斷傳參的i,如果是next,即下一張
if (i == "next") {
//遍歷所有的圓點(遍歷圓點相當於在遍歷圖片)
for (let index in imgArr) {
//如果最後一個圓點的背景色為白色,即當前展示的圖片是最後一張
if (spEle[imgArr.length - 1].style.backgroundColor == "white") {
//則讓i=0,即下標變為了0,然後從59行開始執行,就從第一張開始展示
i = 0;
}
//如果下標為index的圓點背景色為白色,即當前展示的圖片是下標為index的圖片
else if (spEle[index].style.backgroundColor == "white") {
//則讓i=index+1,但index是字串,所有要先-0,讓它的資料型別隱式轉換為number;
//即下標變成了當前圖片的下一張,然後從第59行開始執行
i = index - 0 + 1;
}
}
}
//判斷傳參的i,如果是previous,即上一張,同下一張的寫法
if (i == "previous") {
for (let index in imgArr) {
if (spEle[0].style.backgroundColor == "white") {
i = imgArr.length - 1;
}
else if (spEle[index].style.backgroundColor == "white") {
i = index - 1;
}
}
}
//先遍歷所有點,讓所有點的背景顏色變成預設的
for (let index in imgArr) {
spEle[index].style.backgroundColor = "rgba(255, 255, 255, 0.5)";
}
//每次呼叫前先停止時間函式
clearInterval(j);
//展示下標為i的圖片(必須在進行時間函式前先展示傳參進來的下標為i的圖片,因為時間函式是先等一個時間再進行執行函式,就會出現第一張有多的時間展示)
document.getElementsByClassName("box2")[0].src = `${imgArr[i]}`;
//讓下標為i的點變顏色,即讓它選中(同61行原因)
spEle[i].style.backgroundColor = "white";
//進行時間函式,從選中的點的下一張開始
j = setInterval(
function () {
//先遍歷所有點,讓所有點的背景顏色變成預設的
for (let index in imgArr) {
spEle[index].style.backgroundColor = "rgba(255, 255, 255, 0.5)";
}
//從選中的點的下一張開始進行時間函式,即下標加一
i++;
//如果下標等於圖片陣列的長度,就讓下標等於0,即展示第一張
i == imgArr.length ? i = 0 : "";
//變圖片
document.getElementsByClassName("box2")[0].src = `${imgArr[i]}`;
//變點的顏色
spEle[i].style.backgroundColor = "white";
}, 1500
)
}
//開啟網頁就從下標為0的圖片開始執行輪播函式
lun(0);
HTML
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="style.css">
<title>輪播圖</title>
</head>
<body>
<div>
<h4>只有輪播效果</h4>
<img src="./img/1.jpg" class="box1">
</div>
<div>
<h4>有輪播效果,並且能選擇到某張圖片</h4>
<span class="jianleft" onclick="lun('previous')"><</span>
<span class="jianright" onclick="lun('next')">></span>
<img src="./img/1.jpg" class="box2">
<div class="dote"></div>
</div>
<script src="lunbo.js"></script>
</body>
</html>
CSS
div {
width: 512px;
margin: auto;
position: relative;
}
img {
width: 512px;
height: 288px;
vertical-align: bottom;
}
.dote {
position: absolute;
bottom: 0;
height: 20px;
display: flex;
justify-content: center;
align-items: center;
}
.dote>span {
display: inline-block;
height: 10px;
width: 10px;
border-radius: 50%;
margin: 2px;
}
span[class^="jian"]{
position: absolute;
top:50%;
margin-top: -50%;
display: inline-block;
height: 50px;
width: 50px;
border-radius: 50%;
margin: 2px;
background-color: rgba(255, 255, 255, 0.1);
text-align: center;
line-height: 50px;
color: white;
}
.jianleft{
left: 0;
}
.jianright{
right: 0;
}
效果展示:點我檢視頁面效果(圖片來源網路)
相關文章
- 原生JS實現輪播圖的效果JS
- js實現輪播圖JS
- 原生js實現輪播圖JS
- 原生js實現圖片瀑布流佈局,註釋超詳細JS
- Axure實現輪播效果
- jQuery實現輪播效果jQuery
- 網頁佈局------輪播圖效果實現網頁
- JavaScript焦點圖輪播效果詳解JavaScript
- 用原生js實現圖片輪播器JS
- 直播app開發,首頁輪播圖效果實現APP
- js、jQuery實現文字上下無縫輪播、滾動效果JSjQuery
- ViewPage實現輪播圖View
- Banner實現輪播圖
- js 輪播圖 (原生)JS
- 移動端輪播圖實現方法(dGun.js)JS
- 用原生JS實現 圖片輪播切換 功能JS
- 原生JS實現輪播圖--第二章動畫實現JS動畫
- 直播平臺搭建原始碼,bootstrap實現圖片輪播效果原始碼boot
- 利用回撥函式實現簡單的輪播圖效果函式
- jQuery實現3D圖片輪播詳解jQuery3D
- 教你如何實現 Android TextView 文字輪播效果AndroidTextView
- 原生JS實現輪播圖--第一章圖片展示JS
- 兩種方式實現輪播圖
- 前端基礎功能,原生js實現輪播圖例項教程前端JS
- Vue實現內部元件輪播切換效果Vue元件
- 如何快速實現一個無縫輪播效果
- 短視訊軟體開發,實現簡單的輪播圖效果
- 直播app開發,實現輪播圖上下自動滑動展示效果APP
- vue元件之輪播圖的實現Vue元件
- 用CSS實現一個輪播圖CSS
- [分享會]只用CSS實現輪播圖CSS
- 原生JS實現一個無縫輪播圖外掛(支援vue)JSVue
- 直播平臺原始碼,純JS實現左右滑動輪播圖原始碼JS
- 直播平臺開發,使用swiper實現輪播效果
- vue元件之路之輪播圖的實現Vue元件
- jQuery輪播圖之上下輪播jQuery
- 使用jQuery實現的平滑滾動輪播圖jQuery
- 基於 flex 的 order 實現 carousel 輪播圖Flex