原生JS實(shí)現(xiàn)圖片輪播 JS實(shí)現(xiàn)小廣告插件
最近想用原生JS多實(shí)現(xiàn)一些小功能,現(xià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代碼,使用時記得在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)對應(yīng)
//設(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)對應(yīng)圖片,將li與list下標(biāo)對應(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();
}
}
//自動輪播圖片,每次調(diào)用要記得清除定時器,并在調(diào)用后回歸定時器,防止時間差越變越大
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;
廣告插件
需求:頁面加載結(jié)束后彈出廣告,廣告輪播展示,鼠標(biāo)移入懸停,移出繼續(xù)展示,點(diǎn)X可刪除。
<div id="win">
<img id = "img" />
<button id = "ad_btn">X</button>
//我這是練習(xí),叉號用的X替代,自己做項(xiàng)目加入時可以換成Icon
</div>
//頁面加載結(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)展示:

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
javascript實(shí)時獲取鼠標(biāo)坐標(biāo)值并顯示的方法
這篇文章主要介紹了javascript實(shí)時獲取鼠標(biāo)坐標(biāo)值并顯示的方法,涉及javascript操作鼠標(biāo)事件的相關(guān)技巧,非常具有實(shí)用價值,需要的朋友可以參考下2015-04-04
JavaScript可折疊區(qū)域?qū)崿F(xiàn)代碼
可折疊區(qū)域的基本思想:通過點(diǎn)擊某個地方來顯示或隱藏屏幕中的某個區(qū)域。2010-10-10
批量實(shí)現(xiàn)面向?qū)ο蟮膶?shí)例代碼
本文為大家詳細(xì)介紹下面向?qū)ο蟮睦^承以及如何實(shí)現(xiàn)批量實(shí)現(xiàn)面向?qū)ο螅信d趣的可以參考下哈,希望對大家有所幫助2013-07-07
JavaScript實(shí)現(xiàn)顯示隱藏表單文字
這篇文章主要為大家詳細(xì)介紹了JavaScript實(shí)現(xiàn)顯示隱藏表單文字,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-09-09

