定时轮播图

效果展示

自动轮播图效果


效果分析

1.右侧按钮点击,变量++,如果大于等于8,则复原0
2.左侧按钮点击,变量–,如果小于0,则复原最后一张
3.鼠标经过暂停定时器
4.鼠标离开开启定时器


思路分析

1.右侧按钮点击,变量++,如果大于等于8,则复原0

(1)获取右侧按钮
(声明全局信号量i 控制播放图片的张数)
(2)注册点击事件
(3)得到对应的对象
(4)渲染对应的数据
(5)更换小圆点

  • 先移除原来的类名
  • 当前li再添加这个类名

(6)判断条件:如果大于8,就复原为0

<script>
//获取元素
const img =document.querySelector('.slider-wrapper img')
let i = 0//信号量,控制播放轮播图片的张数
const p = document.querySelector('.slider-footer p')
const footer = document.querySelector('.slider-footer')
//1.右侧按钮业务
//1.1获取右侧按钮
const next = document. querySelector('.next')
//1.2注册点击事件
next.addEventListener('click',function(){
  i++
  if(i>=sliderData.length)
  {
    i=0
  }
   //调用函数
   toggle() 
})
</script>


2.左侧按钮点击,变量 - -,如果小于0,则复原最后一张

和右侧按钮判断条件正好相反,如果小于0 则爬到最后一张图片的索引号是7
(1)获取左侧按钮
(2)注册点击事件
(3)得到对应的对象
(4)渲染对应的数据
(5)更换小圆点
(6)判断条件:如果小于0 则爬到最后一张图片的索引号是7

<script>
  //2.右侧按钮业务
  //1.1获取右侧按钮
const prev = document. querySelector('.prev')
//1.2注册点击事件
prev.addEventListener('click',function(){
  i--
  if(i<0)
  {
    i=sliderData.length
  }
//调用函数 后有解释
toggle()
})

//小圆点
//先删除前面的类名 再在当前的li上加上类名
document.querySelector('.slider-indicator .active').classList.remove('active')
document.querySelector(`.slider-indicator li:nth-child( ${i + 1})`).classList.add('active')
}
</script>


※优化:左右侧按钮业务相同,可声明一个函数实现代码复用

<script>
//声明一个渲染的函数作为复用
function toggle (){
  img.src=sliderData[i].url
p.innerHTML=sliderData[i].title
footer.style.backgroundColor=sliderData[i].color
</script>

3.自动播放模块

js方法自动调用比让用户自己去调用要更简便

let timerId=setInterval(function (){
  //3.1利用js自动调用点击事件
  next.click()  //一定要加小括号调用函数
},1000)

4.鼠标经过暂停定时器

(1)注册事件 鼠标经过事件mouseenter
(2)鼠标经过停止定时器

//4.鼠标经过大盒子,停止自动播放
//4.1获取大盒子
const slider = document.querySelector('.slider')
slider.addEventListener('mouseenter',function (){
  clearInterval(timerId)
})

5.鼠标离开开启定时器

只需要复制3、4的代码
开定时器之前先关闭再重新开启一个新的

//4.鼠标离开大盒子,开启自动播放
slider.addEventListener('mouseleave',function (){
  //关闭定时器,先关后开好习惯
  clearInterval(timerId)
  //开启定时器
   timerId=setInterval(function (){
  //3.1利用js自动调用点击事件
  next.click()  //一定要加小括号调用函数
},1000)
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值