原生js实现轮播图(淡入淡出动画)

底部有源代码哦!!!

功能:

实现图片的自动轮播(淡入淡出效果)。

底部的小圆点也会自动切换。

当鼠标移入图片时,自动轮播暂停,鼠标离开图片时,自动轮播继续。

点击左右按钮也能切换图片。

效果图:

原生js实现轮播图(淡入淡出动画)_第1张图片

代码如下:

html:





    
    Document
    
    
    



    
1 / 3
文本 1
2 / 3
文本 2
3 / 3
文本 3

css:

* {
  box-sizing: border-box
}

body {
  font-family: Verdana, sans-serif;
}

.mySlides {
  display: none
}

.mySlides:nth-child(1) {
  display: block
}

/* 幻灯片容器 */
.slideshow-container {
  max-width: 1000px;
  position: relative;
  margin: auto;
}

/* 下一张 & 上一张 按钮 */
.prev,
.next {
  cursor: pointer;
  position: absolute;
  top: 50%;
  width: auto;
  margin-top: -22px;
  padding: 16px;
  color: white;
  font-weight: bold;
  font-size: 18px;
  transition: 0.6s ease;
  border-radius: 0 3px 3px 0;
}

/* 定位 "下一张" 按钮靠右 */
.next {
  right: 0;
  border-radius: 3px 0 0 3px;
}

/* On hover, add a black background color with a little bit see-through */
.prev:hover,
.next:hover {
  background-color: rgba(0, 0, 0, 0.8);
}

/* 标题文本 */
.text {
  color: #f2f2f2;
  font-size: 15px;
  padding: 8px 12px;
  position: absolute;
  bottom: 8px;
  width: 100%;
  text-align: center;
}

/* 数字文本 (1/3 等) */
.numbertext {
  color: #f2f2f2;
  font-size: 12px;
  padding: 8px 12px;
  position: absolute;
  top: 0;
}

/* 标记符号 */
.dot {
  cursor: pointer;
  height: 13px;
  width: 13px;
  margin: 0 2px;
  background-color: #bbb;
  border-radius: 50%;
  display: inline-block;
  transition: background-color 0.6s ease;
}

.active,
.dot:hover {
  background-color: #717171;
}

/* 淡出动画 */
.fade {
  -webkit-animation-name: fade;
  -webkit-animation-duration: 1.5s;
  animation-name: fade;
  animation-duration: 1.5s;
}

@-webkit-keyframes fade {
  from {
    opacity: 0
  }

  to {
    opacity: 1
  }
}

@keyframes fade {
  from {
    opacity: .4
  }

  to {
    opacity: 1
  }
}

js:

var slideIndex = 0;
var box = document.getElementsByClassName("slideshow-container")[0];
var time;
var slides = document.getElementsByClassName("mySlides");
var dots = document.getElementsByClassName("dot");

// 点击按钮
function plusSlides(index) {
    clearInterval(time);
    //index == 1 代表下一张
    if (index == 1) {
        for (var i = 0; i < slides.length; i++) {
            slides[i].style.display = "none";
        }
        slideIndex++;
        if (slideIndex > slides.length) {
            slideIndex = 1
        }
        for (var i = 0; i < dots.length; i++) {
            dots[i].className = dots[i].className.replace(" active", "");
        }
    } else {
        for (var i = 0; i < slides.length; i++) {
            slides[i].style.display = "none";
        }
        if (--slideIndex < 1) {
            slideIndex = 3;
        }
        for (var i = 0; i < dots.length; i++) {
            dots[i].className = dots[i].className.replace(" active", "");
        }
    }
    slides[slideIndex - 1].style.display = "block";
    dots[slideIndex - 1].className += " active";
}
//自动轮播时使用
function showSlides() {
    for (var i = 0; i < slides.length; i++) {
        slides[i].style.display = "none";
    }
    slideIndex++;
    if (slideIndex > slides.length) {
        slideIndex = 1
    }
    for (var i = 0; i < dots.length; i++) {
        dots[i].className = dots[i].className.replace(" active", "");
    }
    slides[slideIndex - 1].style.display = "block";
    dots[slideIndex - 1].className += " active";
}

time = setInterval(showSlides, 1500);

// 鼠标移入时轮播图取消
box.onmouseenter = function () {
    clearInterval(time);
}
// 鼠标离开时轮播图继续
box.onmouseleave = function () {
    time = setInterval(showSlides, 1500);
}

你可能感兴趣的:(JS)