js原生輪播圖插件制作
本文實(shí)例為大家分享了js原生輪播圖插件制作的具體代碼,供大家參考,具體內(nèi)容如下
調(diào)用時(shí)也只需要寫(xiě)一個(gè)DIV即可
調(diào)用的js部分配置內(nèi)容:
傳入輪播圖需顯示的位置(div)
傳入圖片和點(diǎn)擊跳轉(zhuǎn)的鏈接
話不多說(shuō),上代碼
HTML
<div id="banner"></div>
HTML文檔內(nèi)的<script>,這里是輪播圖的配置內(nèi)容,一共兩個(gè)參數(shù),第一個(gè)是需要傳入的DIV(輪播圖所顯示的區(qū)域),第二個(gè)參數(shù)是一個(gè)數(shù)組,數(shù)組里的元素是一個(gè)個(gè)對(duì)象,對(duì)象里第一個(gè)屬性imgUrl表示圖片,第二個(gè)屬性link表示跳轉(zhuǎn)鏈接
一個(gè)數(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)容
// 兩個(gè)參數(shù),第一個(gè)輪播圖區(qū)域,第二個(gè)是配置 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)建一個(gè)區(qū)域來(lái)顯示圖片 initNumber();//創(chuàng)建區(qū)域顯示角標(biāo) setStatus();//設(shè)置狀態(tài) autoChange();//自動(dòng)切換 //下面是局部函數(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)建角標(biāo)元素和設(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è)置角標(biāo)區(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) } //自動(dòng)切換 function autoChange() { if (changeTimer) { return; } changeTimer = setInterval(function () { if (curIndex === options.length - 1) { curIndex = 0; } else { curIndex++; } setStatus(); }, changeDuration) } }
輪播圖速度(切換時(shí)間)可在插件代碼中 var changeDuration = 1000;//間隔 一句里調(diào)整
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
重學(xué) JS:為啥 await 不能用在 forEach 中詳解
這篇文章主要介紹了重學(xué) JS:為啥 await 不能用在 forEach 中,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-04-04JS創(chuàng)建自定義表格具體實(shí)現(xiàn)
創(chuàng)建自定義表格的方法有很多,本文為大家介紹下使用js是如何創(chuàng)建的,感興趣的朋友可以參考下2014-02-02移動(dòng)端日期插件Mobiscroll.js使用詳解
這篇文章主要為大家詳細(xì)介紹了移動(dòng)端日期插件Mobiscroll.js的使用方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-12-12javascript(jquery)利用函數(shù)修改全局變量的代碼
現(xiàn)在博客系統(tǒng)的評(píng)論遇到一個(gè)問(wèn)題,用戶(hù)點(diǎn)擊“最后一頁(yè)”鏈接之后就自動(dòng)調(diào)取最后一頁(yè)的資料來(lái)顯示。2009-11-11JS圖片延遲加載插件LazyImgv1.0用法分析【附demo源碼下載】
這篇文章主要介紹了JS圖片延遲加載插件LazyImgv1.0用法,結(jié)合實(shí)例形式分析了使用圖片延遲加載插件LazyImgv1.0的注意事項(xiàng)與核心操作技巧,并附帶demo源碼供讀者下載參考,需要的朋友可以參考下2017-09-09bootstrap table實(shí)現(xiàn)x-editable的行單元格編輯及解決數(shù)據(jù)Empty和支持多樣式問(wèn)題
本文著重解決x-editable編輯的數(shù)據(jù)動(dòng)態(tài)添加和顯示數(shù)據(jù)為Empty的問(wèn)題,還有給表格單元格的內(nèi)容設(shè)置多樣式,使得顯示多樣化,需要的朋友可以參考下2017-08-08js+css實(shí)現(xiàn)有立體感的按鈕式文字豎排菜單效果
這篇文章主要介紹了js+css實(shí)現(xiàn)有立體感的按鈕式文字豎排菜單效果,通過(guò)javascript動(dòng)態(tài)調(diào)用頁(yè)面元素樣式實(shí)現(xiàn)豎排菜單的功能,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-09-09基于JavaScript編寫(xiě)一個(gè)圖片轉(zhuǎn)PDF轉(zhuǎn)換器
本文為大家介紹了一個(gè)簡(jiǎn)單的 JavaScript 項(xiàng)目,可以將圖片轉(zhuǎn)換為 PDF 文件。你可以從本地選擇任何一張圖片,只需點(diǎn)擊一下即可將其轉(zhuǎn)換為 PDF 文件,感興趣的可以動(dòng)手嘗試一下2022-07-07vue使用vue-quill-editor富文本編輯器且將圖片上傳到服務(wù)器的功能
這篇文章主要介紹了vue使用vue-quill-editor富文本編輯器且將圖片上傳到服務(wù)器的功能,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-01-01