原生JS實(shí)現(xiàn)圖片輪播 JS實(shí)現(xiàn)小廣告插件
最近想用原生JS多實(shí)現(xiàn)一些小功能,現(xiàn)在寫(xiě)到博客里,大家可以借鑒,有問(wèn)題歡迎指出。
輪播圖
需求:
圖片循環(huán)輪播,可點(diǎn)擊左右切換,切換狀態(tài)與<li>綁定,鼠標(biāo)移入圖片懸停,鼠標(biāo)移出圖片繼續(xù)循環(huán)切換。
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>原生js輪播圖片</title> </head> <style> .container{ width: 100%; height: 500px; position: relative; } .content{ width: 900px; height: 450px; position: relative; overflow: hidden; border: 1px solid seagreen; margin: 0 auto; } .slider-img{ width: 900px; height: 450px; margin: 10px auto; } .slider-img img{ vertical-align: top; width: 800px; height: 400px; margin: 10px 50px; display: block; } .left{ margin-top: -300px; margin-left: 50px; width: 100px; height: 100px; } .left img,.right img{ width: 100px; height: 100px; } .right{ margin-top: -100px; margin-right: 50px; float: right; width: 100px; height: 100px; } .dot{ position: relative; top: 23%; left: 43%; width: 50%; } .dotul{ width: 450px; } .dotul li{ width: 20px; height: 20px; background-color: seagreen; list-style: none; float: left; border-radius: 20px; margin-left: 15px; z-index: 999; cursor: pointer; } .active{ background-color: orangered !important; } </style> <body> <div class="container" id="container"> <div class="content" id="content"> <div class="slider-img" id="slider" > <a href="javascript:;" > <img src="./img/88.jpg" alt="" id="img"> </a> </div> </div> <div class="btn"> <div class="left" id="left"> <a href=" ###" ><img src=""></a> </div> <div class="right" id="right"> <a href=" ###" ><img src=""></a> </div> </div> <div class="dot"> <ul id="ul" class="dotul"> <li class="active"></li> <li></li> <li></li> <li></li> </ul> </div> </div>
js代碼,使用時(shí)記得在html里引入JS。
var container = document.getElementById("container"); var content = document.getElementById("content"); var slider = document.getElementById("slider"); var img = document.getElementById("img"); var ul = document.getElementById("ul"); var li = document.getElementsByTagName("li"); var left = document.getElementById("left"); var right = document.getElementById("right"); var num = 0; var timer = null; var picList = ["./img/88.jpg","./img/are.jpg","./img/family.jpg","./img/one.jpg"]; //將li與list下標(biāo)對(duì)應(yīng) //設(shè)置展示圖片的方法,展示時(shí),li的圓點(diǎn)與圖片綁定在一起 ShowPicture = function() { img.src = picList[num]; for(var i = 0 ; i < li.length;i++) { li[i].className = ''; } li[num].className = 'active'; } //左點(diǎn)擊,如果已經(jīng)是第一張了就返回最后一張 left.onclick = function() { num--; if(num < 0) { num = picList.length-1; } ShowPicture(); } //右點(diǎn)擊,若已經(jīng)是最后一張返回第一張 right.onclick = function() { num++; if(num >= picList.length) { //3 num = 0; } ShowPicture(); } //實(shí)現(xiàn)點(diǎn)擊圓點(diǎn)跳轉(zhuǎn)對(duì)應(yīng)圖片,將li與list下標(biāo)對(duì)應(yīng)list.index=li.index for(var i = 0; i < picList.length ; i++) { li[i].index = i; li[i].onclick = function() { num = this.index; ShowPicture(); } } //自動(dòng)輪播圖片,每次調(diào)用要記得清除定時(shí)器,并在調(diào)用后回歸定時(shí)器,防止時(shí)間差越變?cè)酱? autoChange = function() { clearInterval(timer); timer = setInterval(() => { num++; num %= picList.length; ShowPicture(); }, 3000); return timer; } window.onload = autoChange; //事件 img.onmouseover = function() { clearInterval(timer); } img.onmouseleave = autoChange;
廣告插件
需求:頁(yè)面加載結(jié)束后彈出廣告,廣告輪播展示,鼠標(biāo)移入懸停,移出繼續(xù)展示,點(diǎn)X可刪除。
<div id="win"> <img id = "img" /> <button id = "ad_btn">X</button> //我這是練習(xí),叉號(hào)用的X替代,自己做項(xiàng)目加入時(shí)可以換成Icon </div>
//頁(yè)面加載結(jié)束彈出廣告,廣告切換展示,點(diǎn)擊X可刪除, var ad = document.getElementById('win'); var img = document.getElementById('img'); var ad_btn = document.getElementById('ad_btn'); var timer; window.onload = function () { // clearInterval(timer); timer = setTimeout(() => { ad.style.display = 'block'; }, 2000); change(); } var count=0; var num = 0; var imgTimer = null; //picture srcList var picList = ['../img/88.jpg','../img/one.jpg','../img/family.jpg','../img/are.jpg']; function change() { clearInterval(imgTimer) imgTimer = setInterval(() => { if(count === picList.length) { count = 0; resetShow(); } else { startShow(); } count++; }, 3000); } function resetShow() { img.src = picList[0]; num = 0; startShow(); } function startShow() { if(num < picList.length) { img.src = picList[num++]; } else { resetShow(); } } ad_btn.addEventListener('click' , (e)=>{ ad.style.display = 'none'; clearTimeout(timer) }); ad.addEventListener('mouseover' , ()=>{ clearInterval(imgTimer); }) ad.onmouseleave = function() { change(); }
實(shí)現(xiàn)展示:
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
JavaScript中子函數(shù)訪問(wèn)外部變量的3種解決方法
任何在函數(shù)中定義的變量,都可認(rèn)為是私有變量,因?yàn)椴荒茉诤瘮?shù)外部訪問(wèn)這些變量,這篇文章主要給大家介紹了關(guān)于JavaScript中子函數(shù)訪問(wèn)外部變量的3種解決方法,需要的朋友可以參考下2021-06-06js全選實(shí)現(xiàn)和判斷是否有復(fù)選框選中的方法
這篇文章主要介紹了js全選實(shí)現(xiàn)和判斷是否有復(fù)選框選中的方法,涉及javascript操作復(fù)選框的技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2015-02-02用ES6的class模仿Vue寫(xiě)一個(gè)雙向綁定的示例代碼
本篇文章主要介紹了用ES6的class模仿Vue寫(xiě)一個(gè)雙向綁定的示例代碼,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-04-04淺談Javascript中的12種DOM節(jié)點(diǎn)類型
DOM是javascript操作網(wǎng)頁(yè)的接口,全稱為文檔對(duì)象模型(Document Object Model)。本文將主要說(shuō)明DOM節(jié)點(diǎn)類型,有需要的可以參考借鑒。2016-08-08