主要思路:先将需要轮播的4张图使用绝对定位让其重叠在banner这个盒子中,然后遍历所有的图片将其隐藏,再获取当前图片的index值,根据当前的index值设置当前的图片显示出来。设置间歇定时器setInterval每隔1秒使得index的值加1,如果大于图片个数则index=0,每隔1秒调用changeImg()函数,改变图片的显示。
li项的实现原理一样,总的来说就是围绕index的值来进行设置图片的显示与隐藏,或是Li项的样式,从而达到轮播图的效果。
以下为代码部分:
HTML代码:
-
<!DOCTYPE html> -
<html lang="en"> -
<head> -
<meta charset="UTF-8"> -
<title>JS实现轮播图</title> -
<link rel="stylesheet" type="text/css" href="css/style.css"> -
</head> -
<body> -
<div class="main" id="main"> -
<div class="nav" id="nav"> -
<ul> -
<li class="changeColor">首页</li> -
<li>点击看看</li> -
<li>会自动的</li> -
<li>我的网站</li> -
</ul> -
</div> -
<div class="banner" id="banner"> -
<a href="#"> -
<div class="banner-slide slide1"></div> -
</a> -
<a href="#"> -
<div class="banner-slide slide2"></div> -
</a> -
<a href="#"> -
<div class="banner-slide slide3"></div> -
</a> -
<a href="#"> -
<div class="banner-slide slide4"></div> -
</a> -
</div> -
</div> -
<script type="text/javascript" src="js/script.js"></script> -
</body> -
</html>
CSS代码:
-
* { -
padding: 0; -
margin: 0; -
} -
.main { -
width: 1200px; -
height: auto; -
margin: 50px auto; -
overflow: hidden; -
} -
.nav { -
width: 1200px; -
height: 80px; -
} -
ul {list-style-type: none;} -
li { -
float: left; -
width: 25%; -
height: 80px; -
text-align: center; -
line-height: 80px; -
cursor: pointer; -
} -
.changeColor { -
background: #ffcc00; -
border-radius: 5px; -
} -
.banner { -
width: 1200px; -
height: 460px; -
overflow: hidden; -
} -
.banner-slide { -
width: 1200px; -
height: 460px; -
background-repeat: no-repeat; -
position: absolute; -
} -
.slide1 { -
background-image: url("../img/1.jpg"); -
} -
.slide2 { -
background-image: url("../img/2.jpg"); -
} -
.slide3 { -
background-image: url("../img/3.jpg"); -
} -
.slide4 { -
background-image: url("../img/4.jpg"); -
}
JS代码:
-
var timer = null, -
index = 0, -
pics = document.getElementsByClassName("banner-slide"), -
lis = document.getElementsByTagName("li"); -
//封装一个代替getElementById()的方法 -
function byId(id){ -
return typeof(id) === "string"?document.getElementById(id):id; -
} -
function slideImg() { -
var main = byId("main"); -
var banner = byId("banner"); -
main.onmouseover = function(){ -
stopAutoPlay(); -
} -
main.onmouseout = function(){ -
startAutoPlay(); -
} -
main.onmouseout(); -
//点击导航栏切换图片 -
for(var i=0;i<pics.length;i++){ -
lis[i].id = i; -
//给每个li项绑定点击事件 -
lis[i].onclick = function(){ -
//获取当前li项的index值 -
index = this.id; -
changeImg(); -
} -
} -
} -
//开始播放轮播图 -
function startAutoPlay(){ -
timer = setInterval(function(){ -
index++; -
if(index>3){ -
index = 0; -
} -
changeImg(); -
},1000); -
} -
//暂停播放 -
function stopAutoPlay(){ -
if (timer) { -
clearInterval(timer); -
} -
} -
//改变轮播图 -
function changeImg(){ -
for(var i=0;i<pics.length;i++){ -
pics[i].style.display = "none"; -
lis[i].className = ""; -
} -
pics[index].style.display = "block"; -
lis[index].className = "changeColor"; -
} -
slideImg();
效果如下:
--------------------- 本文来自 风丶不会停息 的优快云 博客 ,全文地址请点击:https://blog.youkuaiyun.com/Best_CXY/article/details/79565983?utm_source=copy
12万+

被折叠的 条评论
为什么被折叠?



