原生js实现淡入淡出轮播图效果

下面为原生js写出来的轮播图淡入淡出效果,源代码能够正确运行。
1.效果展示
在这里插入图片描述

2.源代码

swiper.html

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>轮播图</title>
  <link rel="stylesheet" href="./style/style.css">
  <script src="./script/jquery.min.js"></script>
</head>
<body>
  <div class="swiper">
  <--- 图片轮播容器->
    <div class="swiper-wrap">
      <img class="active" src="./images/1.jpg" alt="">
      <img class="" src="./images/2.jpg" alt="">
      <img class="" src="./images/3.jpg" alt="">
      <img class="" src="./images/4.jpg" alt="">
      <img class="" src="./images/5.jpg" alt="">
    </div>
  <--- 左右点击箭头->
    <div class="slider_control prev">&lt;</div>
    <div class="slider_control next">&gt;</div>
 <--- 图片轮播容器->
    <div class="dynamic">
      <span class="active"></span>
      <span class=""></span>
      <span class=""></span>
      <span class=""></span>
      <span class=""></span>
    </div>
  </div>
</body>
</html>

swiper.js

<script>
const len = $(".swiper-wrap").children("img").length;

// 当前图片索引
let current = 0,
  timer = null;

// 下一张图片
$(".next").click(function () {
  ++current;
  // 如果索引 等于 图片数组长度则等于 0
  if (current === len) current = 0;
  // 轮播图渲染图片
  renderImg();
});

// 上一张图片
$(".prev").click(function () {
  --current;
  // 如果索引 小于 0 则等于 图片数组长度 - 1
  if (current < 0) current = len - 1;
  // 轮播图渲染图片
  renderImg();
});

// 轮播图渲染图片
function renderImg() {
  $(".swiper-wrap img")
    .eq(current)
    .addClass("active")
    .siblings("img")
    .removeClass("active");
  $(".dynamic span")
    .eq(current)
    .addClass("active")
    .siblings("span")
    .removeClass("active");
}

// 小圆点点击切换图片
$(".dynamic span").each(function (index, item) {
  $(this).mousemove(function () {
    current = index;
    renderImg();
  });
});


// 定时器 切换轮播图
function animateBanner() {
  timer = setInterval(() => {
    ++current;
    // 如果索引 等于 图片数组长度则等于 0
    if (current === len) current = 0;

    // 轮播图渲染图片
    renderImg();
  }, 1500);
}

// 鼠标经过轮播图
$('.swiper').mousemove(function() { clearInterval(timer)})
// 鼠标移出轮播图
$('.swiper').mouseout(animateBanner)

animateBanner();

</script>

swiper.css

.swiper {
  width: 770px;
  height: 505px;
  margin: 0 auto;
  position: relative;
}

.swiper-wrap {
  width: 100%;
  height: 100%;
}
.swiper-wrap img {
  position: absolute;
  top: 0;
  right: 0;
  opacity: 0;
  transition: all .5s;
  cursor: pointer;
  width: 770px;
  height: 505px;
}

.swiper-wrap img.active {
  opacity: 1;
}

.slider_control {
  height: 50px;
  width: 50px;
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  font-size: 22px;
  line-height: 50px;
  text-align: center;
  color: #fff;
  background: #5251518f;
  cursor: pointer;
  opacity: .5;
  font-weight: bold;
  user-select: none;
}

.swiper:hover .slider_control {
  opacity: 1;
}

.slider_control.prev {
  left: 0;
}

.slider_control.next {
  right: 0;
}

.dynamic {
  position: absolute;
  bottom: 20px;    
  left: 50px;
  text-align: center;
}

.dynamic span {
  display: inline-block;
  width: 10px;
  height: 10px;
  background: #ffffff;
  border-radius: 50%;
  box-shadow:  0 0 10px rgba(0, 0, 0, .3);
  cursor: pointer;
  user-select: none;
}

.dynamic span.active {
  background: #69aae7;
}

3.总结:
轮播图还有左右无缝轮播等多种效果,大家可以尝试下。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

程序媛夏天

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

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

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

打赏作者

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

抵扣说明:

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

余额充值