JavaScript原生实现焦点图轮播与定时器控制
作者:闭包旅人时间:2026-10-30 18:30:45浏览:409
本文介绍如何使用JavaScript原生代码实现焦点图左右切换效果,并集成setInterval与clearInterval定时器实现自动轮播。通过监听鼠标移入移出事件控制定时器状态,无需依赖jQuery即可完成完整的轮播交互功能。
JavaScript原生焦点图与定时器实现
在jQuery实现的焦点图左右切换基础上,将代码重构为JavaScript原生实现,并引入定时器功能(包括setInterval()和clearInterval())以支持自动轮播。
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>焦点图转换--原生和定时器</title>
<link rel="stylesheet" href="css/reset.css">
<style type="text/css">
.pic-show{width: 480px;overflow: hidden;}
#pic{width: 1920px;height: 320px;position: relative;}
#pic img{display: block;float: left;}
.pic-show>img{display: block;cursor: pointer;opacity: 0.8; position: absolute;top: 142px;left: 30px;}
.pic-show>img:last-child{display: block; position: absolute;left: 414px; }
ul{width: 120px;height: 18px;position: absolute;top: 280px;left: 185px;}
li{float: left;width: 20px;height: 18px;margin-left: 5px;}
a{display: block;width: 20px;height: 18px;text-decoration: none;border: 1px solid #ccc;border-radius: 50%;background-color: #ccc;opacity: 0.6;}
a:hover{background-color: #094a99;}
.aCss{background-color: #094a99;}
p{width: 480px;text-align: center;}
</style>
</head>
<body>
<div class="pic-show">
<div id="pic">
<img src="images/1.jpg" alt="">
<img src="images/2.jpg" alt="">
<img src="images/3.jpg" alt="">
<img src="images/4.jpg" alt="">
</div>
<img id="prev" src="images/slider-prev.png" alt="">
<img id="next" src="images/slider-next.png" alt="">
</div>
<ul id="list">
<li><a href="#" title="日落"></a></li>
<li><a href="#" title="钢琴"></a></li>
<li><a href="#" title="大海"></a></li>
<li><a href="#" title="秋色"></a></li>
</ul>
<p id="p">这是一段测试文字</p>
<script src="js/jquery-3.0.0.js"></script>
<script type="text/javascript">
var num=0;
function G(id){
return document.getElementById(id)
}
var pic = G('pic')
var next = G('next')
var prev = G('prev')
var p = G('p')
var list = G('list')
var arr = G('list').getElementsByTagName('a')
//点击next
next.onclick=function(){
if(num<3){
num=num+1;
}
else{
num=0;
}
console.log(num);
var mlNum=num * -480+'px';
pic.style.marginLeft=mlNum;
for(var j=0;j<arr.length;j++){
arr[j].style.backgroundColor='#ccc';
}
arr[num].style.backgroundColor="#094a99";
event.preventDefault();
var txt=arr[num].getAttribute("title");
console.log(txt);
p.textContent=txt;
}
//点击prev
prev.onclick=function(){
if(num>0){
num=num-1;
}
else{
num=3;
}
console.log(num);
var mlNum2=num * -480+'px';
pic.style.marginLeft=mlNum2;
for(var j=0;j<arr.length;j++){
arr[j].style.backgroundColor='#ccc';
}
arr[num].style.backgroundColor="#094a99";
event.preventDefault();
var txt=arr[num].getAttribute("title");
console.log(txt);
p.textContent=txt;
}
for(var i=0;i<arr.length;i++){
arr[i].index=i;//创建索引值
arr[i].onclick=function(event){ num=this.index;
var mlNum3=num * -480+'px'; pic.style.marginLeft=mlNum3;
for(var j=0;j<arr.length;j++){
arr[j].style.backgroundColor='#ccc';
}
this.style.backgroundColor='#094a99';
event.preventDefault();
var txt=this.getAttribute("title");
p.textContent=txt;
}
}
//函数封装
function lunbo(){
if(num<3){
num=num+1;
}
else{
num=0;
}
console.log(num);
var mlNum=num * -480+'px';
pic.style.marginLeft=mlNum;
for(var j=0;j<arr.length;j++){
arr[j].style.backgroundColor='#ccc';
}
arr[num].style.backgroundColor="#094a99";
event.preventDefault();
var txt=arr[num].getAttribute("title");
console.log(txt);
p.textContent=txt;
}
//通过定时器调用封装好的函数
var stop=setInterval(lunbo,1500);
//鼠标放上和离开时定时器的状态
pic.onmouseenter=function(){
clearInterval(stop)
}
pic.onmouseleave=function(){
stop=setInterval(lunbo,1500)
}
</script>
</body>
</html>
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持本站!
作者最新文章
怎么用 Promise 封装 JavaScript sleep 函数实现异步延时
2026-11-05 17:49:14
什么时候该用JS构造器:与工厂模式、字面量的选择对比
2026-11-05 16:18:22
推荐几款轻量级JS照片墙开源库及对比
2026-11-05 15:56:19
JavaScript递归写法有哪些常见陷阱及避免方法
2026-11-05 14:53:38
JS数组浅拷贝与深拷贝怎么选?场景与方法总结
2026-11-05 14:41:02
