js原生輪播圖插件制作
本文實例為大家分享了js原生輪播圖插件制作的具體代碼,供大家參考,具體內(nèi)容如下

調(diào)用時也只需要寫一個DIV即可

調(diào)用的js部分配置內(nèi)容:
傳入輪播圖需顯示的位置(div)
傳入圖片和點擊跳轉(zhuǎn)的鏈接
話不多說,上代碼
HTML
<div id="banner"></div>
HTML文檔內(nèi)的<script>,這里是輪播圖的配置內(nèi)容,一共兩個參數(shù),第一個是需要傳入的DIV(輪播圖所顯示的區(qū)域),第二個參數(shù)是一個數(shù)組,數(shù)組里的元素是一個個對象,對象里第一個屬性imgUrl表示圖片,第二個屬性link表示跳轉(zhuǎn)鏈接
一個數(shù)組元素就是一張圖片,不限數(shù)量,可自適應(yīng)
<script>
bannerArea(document.getElementById("banner"),[
{imgUrl:"圖片",
link:"跳轉(zhuǎn)鏈接"
},
{imgUrl:"圖片",
link:"跳轉(zhuǎn)鏈接"
},
{imgUrl:"圖片",
link:"跳轉(zhuǎn)鏈接"
}
])
</script>
JS插件內(nèi)容
// 兩個參數(shù),第一個輪播圖區(qū)域,第二個是配置
function bannerArea(areaDom, options) {
var imgArea = document.createElement("div");
var numberArea = document.createElement("div");
var curIndex = 0;//第幾張輪播圖
var changeTimer = null;
var changeDuration = 1000;//間隔
var timer = null;
initImg();//創(chuàng)建一個區(qū)域來顯示圖片
initNumber();//創(chuàng)建區(qū)域顯示角標
setStatus();//設(shè)置狀態(tài)
autoChange();//自動切換
//下面是局部函數(shù)
//創(chuàng)建圖片,并且設(shè)置樣式
function initImg() {
imgArea.style.width = "100%";
imgArea.style.height = "100%";
imgArea.style.display = "flex";
imgArea.style.overflow = "hidden";
for (let i = 0; i < options.length; i++) {
var obj = options[i];
var img = document.createElement("img");
img.src = obj.imgUrl;
img.style.width = "100%";
img.style.height = "100%";
img.style.margin = "0";
img.addEventListener("click", function () {
location.href = options[i].link;
})
imgArea.appendChild(img);
}
imgArea.addEventListener("mouseenter", function () {
clearInterval(changeTimer);
changeTimer = null;
})
imgArea.addEventListener("mouseleave", function () {
autoChange();
})
areaDom.appendChild(imgArea);
}
//創(chuàng)建角標元素和設(shè)置樣式
function initNumber() {
numberArea.style.textAlign = "center";
numberArea.style.marginTop = "-25px";
for (let i = 0; i < options.length; i++) {
var sp = document.createElement("span");
sp.style.width = "12px";
sp.style.height = "12px";
sp.style.background = "lightgray";
sp.style.display = "inline-block";
sp.style.margin = "0 7px";
sp.style.borderRadius = "50%";
sp.style.cursor = "pointer";
sp.addEventListener("click", function () {
curIndex = i;
setStatus();
})
numberArea.appendChild(sp);
}
areaDom.appendChild(numberArea);
}
//設(shè)置角標區(qū)域狀態(tài)
function setStatus() {
//設(shè)置圓圈的背景顏色
for (var i = 0; i < options.length; i++) {
if (i === curIndex) {
//設(shè)置背景顏色為選擇
numberArea.children[i].style.background = "rgb(222 57 57)";
} else {
//非選擇
numberArea.children[i].style.background = "lightgray";;
}
}
//顯示圖片
var start = parseInt(imgArea.children[0].style.marginLeft);
var end = curIndex * -100;
var dis = end - start;
var duration = 500;
var speed = dis / duration;
if (timer) {
clearInterval(timer);
}
timer = setInterval(function () {
start += speed * 20;
imgArea.children[0].style.marginLeft = start + "%";
if (Math.abs(end - start) < 1) {
imgArea.children[0].style.marginLeft = end + "%";
clearInterval(timer);
}
}, 20)
}
//自動切換
function autoChange() {
if (changeTimer) {
return;
}
changeTimer = setInterval(function () {
if (curIndex === options.length - 1) {
curIndex = 0;
} else {
curIndex++;
}
setStatus();
}, changeDuration)
}
}
輪播圖速度(切換時間)可在插件代碼中 var changeDuration = 1000;//間隔 一句里調(diào)整
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
重學 JS:為啥 await 不能用在 forEach 中詳解
這篇文章主要介紹了重學 JS:為啥 await 不能用在 forEach 中,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2019-04-04
javascript(jquery)利用函數(shù)修改全局變量的代碼
現(xiàn)在博客系統(tǒng)的評論遇到一個問題,用戶點擊“最后一頁”鏈接之后就自動調(diào)取最后一頁的資料來顯示。2009-11-11
JS圖片延遲加載插件LazyImgv1.0用法分析【附demo源碼下載】
這篇文章主要介紹了JS圖片延遲加載插件LazyImgv1.0用法,結(jié)合實例形式分析了使用圖片延遲加載插件LazyImgv1.0的注意事項與核心操作技巧,并附帶demo源碼供讀者下載參考,需要的朋友可以參考下2017-09-09
bootstrap table實現(xiàn)x-editable的行單元格編輯及解決數(shù)據(jù)Empty和支持多樣式問題
本文著重解決x-editable編輯的數(shù)據(jù)動態(tài)添加和顯示數(shù)據(jù)為Empty的問題,還有給表格單元格的內(nèi)容設(shè)置多樣式,使得顯示多樣化,需要的朋友可以參考下2017-08-08
js+css實現(xiàn)有立體感的按鈕式文字豎排菜單效果
這篇文章主要介紹了js+css實現(xiàn)有立體感的按鈕式文字豎排菜單效果,通過javascript動態(tài)調(diào)用頁面元素樣式實現(xiàn)豎排菜單的功能,具有一定參考借鑒價值,需要的朋友可以參考下2015-09-09
基于JavaScript編寫一個圖片轉(zhuǎn)PDF轉(zhuǎn)換器
本文為大家介紹了一個簡單的 JavaScript 項目,可以將圖片轉(zhuǎn)換為 PDF 文件。你可以從本地選擇任何一張圖片,只需點擊一下即可將其轉(zhuǎn)換為 PDF 文件,感興趣的可以動手嘗試一下2022-07-07
vue使用vue-quill-editor富文本編輯器且將圖片上傳到服務(wù)器的功能
這篇文章主要介紹了vue使用vue-quill-editor富文本編輯器且將圖片上傳到服務(wù)器的功能,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-01-01

