记录轮播图

	<style>
		* {
			padding: 0;
			margin: 0;
		}
		.box {
			position: relative;
			margin: 100px auto;
			overflow: hidden;
			width: 600px;
		}
		.img-box {
			display: flex;
			width: 3000px;
			list-style: none;
		}
		.img-item {
			width: 600px;
			background-color: #02ffff;
			height: 600px;
			line-height: 600px;
			text-align: center;
		}
		.prev, .next {
			position: absolute;
			top: 50%;
			transform: translateY(-50%);
			background-color: rgba(0,0,0,.5);
			padding: 10px;
			border-radius: 50%;
			color: #ccc;
		}
		.prev {
			left: 10px;
		}
		.next {
			right: 10px;
		}
		.num-box {
			display: flex;
			position: absolute;
			left: 50%;
			transform: translateX(-50%);
			bottom: 20px;
		}
		.num-item {
			margin-right: 20px;
			background-color: rgba(0,0,0,.3);
			padding: 10px;
			border-radius: 50%;
		}
	</style>
</head>
<body>
	<div class="box">
		<!--  图片列表  -->
		<ul class="img-box">
			<li class="img-item">1</li>
			<li class="img-item">2</li>
			<li class="img-item">3</li>
			<li class="img-item">4</li>
			<li class="img-item">5</li>
		</ul>

		<!--  上一张、下一张按钮  -->
		<div class="prev">
			<span>&lt;</span>
		</div>
		<div class="next">
			<span>&gt;</span>
		</div>

		<div class="num-box">
			<div class="num-item" data-index="0">1</div>
			<div class="num-item" data-index="1">2</div>
			<div class="num-item" data-index="2">3</div>
			<div class="num-item" data-index="3">4</div>
			<div class="num-item" data-index="4">5</div>
		</div>

	</div>
</body>
<script>
	const imgBox = document.querySelector('.img-box')
	const nextBtn = document.querySelector('.next')
	const prevBtn = document.querySelector('.prev')
	const numBox = document.querySelector('.num-box')
	const numList = document.querySelectorAll('.num-item')


  let currentIdx = 0
	let timer = null

  numList[currentIdx].style.backgroundColor = '#ccc'

  nextBtn.onclick = nextFun
  prevBtn.onclick = prevFun
  numBox.addEventListener('click', numClick)
  imgBox.addEventListener('mouseenter', stopAutoPlay)
  imgBox.addEventListener('mouseleave', autoPlay)


  // 开启自动播放
  autoPlay();

	function nextFun () {
    imgBox.style.transition = '1s'
    if (currentIdx === 4) {
      imgBox.style.transition = '0s'
      currentIdx = 0
		} else {
      ++currentIdx
		}
		imgBox.style.transform = `translateX(${-600 * currentIdx}px)`
  }

	function prevFun () {
    imgBox.style.transition = '1s'
    if (currentIdx === 0) {
      imgBox.style.transition = '0s'
      currentIdx = 4
		} else {
      --currentIdx
		}
    imgBox.style.transform = `translateX(${-600 * currentIdx}px)`
  }

  function numClick(evt) {
    imgBox.style.transition = '1s'
    numList[currentIdx].style.backgroundColor = ''
    const idx = evt.target.dataset.index
    if (!idx) return
    currentIdx = idx - 0
    numList[idx].style.backgroundColor = '#ccc'
    imgBox.style.transform = `translateX(${-600 * idx}px)`
  }

  // 循环播放
  function autoPlay() {
    timer = setInterval(nextFun, 1000);
  }

  // 关闭自动播放
  function stopAutoPlay() {
    // 清除定时器
    clearInterval(timer);
  }
</script>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Amodoro

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值