html:css
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>淡入淡出效果轮播图</title>
<link rel="stylesheet" href="css/swiper.css">
<style>
* {
margin: 0;
padding: 0;
}
ul, ol, li {
list-style: none;
}
</style>
</head>
<body>
<div id="swiper">
<ul class="swiper-wrapper">
<li class="swiper-item actived">
<img src="images/play/01.jpg" alt="图片">
</li>
<li class="swiper-item">
<img src="images/play/02.jpg" alt="图片">
</li>
<li class="swiper-item">
<img src="images/play/03.jpg" alt="图片">
</li>
<li class="swiper-item">
<img src="images/play/04.jpg" alt="图片">
</li>
<li class="swiper-item">
<img src="images/play/05.jpg" alt="图片">
</li>
</ul>
<ol class="pagination"></ol>
<div class="control-btns">
<div class="prev-btn"></div>
<div class="next-btn"></div>
</div>
</div>
<script src="js/swiper.js"></script>
<script>
swiper({
el: document.querySelector('#swiper'),
pagination: document.querySelector('#swiper .pagination'),
isAutoplay: true,
duration: 5000
});
</script>
</body>
</html>
css:
#swiper {
width: 900px;
height: 350px;
margin: 100px auto;
position: relative;
}
.swiper-item {
position: absolute;
left: 0;
top: 0;
opacity: 0;
transition: opacity 1s;
}
.swiper-item.actived {
opacity: 1;
}
.swiper-item img {
display: block;
}
.pagination {
font-size: 0;
position: absolute;
right: 10px;
bottom: 10px;
}
.pagination li {
width: 20px;
height: 20px;
margin-right: 8px;
font-size: 14px;
border: 1px solid #fff;
border-radius: 50%;
text-align: center;
line-height: 20px;
color: #fff;
display: inline-block;
cursor: pointer;
}
.pagination li.actived {
border-color: #f60;
color: #fff;
background: #000;
}
.prev-btn, .next-btn {
width: 40px;
height: 100px;
margin-top: auto;
margin-bottom: auto;
background: url("../images/play/index.png") no-repeat;
cursor: pointer;
position: absolute;
top: 0;
bottom: 0;
}
.next-btn {
right: 0;
background-position-x: -50px;
}
JS:
(function (w) { function swiper (obj) { //获取swiper元素 var swiper = obj.el; //获取定时的时间间隔 var duration = obj.duration || 5000; //获取图片容器 var swiperItems = document.querySelectorAll('.swiper-item'); //给上一张图片控制按钮 var prevBtn = document.querySelector('.control-btns .prev-btn'); //给下一张图片控制按钮 var nextBtn = document.querySelector('.control-btns .next-btn'); //标记当前索引 var currentIndex = 0; //设置定时标记 var timerId = null; //建立分页按钮 if (obj.pagination) { for (var i = 0; i < swiperItems.length; i ++) { var li = document.createElement('li'); li.innerHTML = i + 1; obj.pagination.appendChild(li); } //获取分页按钮 var paginationItems = document.querySelectorAll('.pagination li'); //给分页按钮绑定单击事件 paginationItems.forEach(function (paginationItem, index) { paginationItem.addEventListener('click', function () { currentIndex = index; setPlay(); }) }); } //上来先初始化 setPlay(); //给上一张图片控制按钮绑定单击事件 prevBtn.addEventListener('click', function () { setPlay('up'); }); //给下一张图片控制按钮绑定单击事件 nextBtn.addEventListener('click', function () { setPlay('down'); }); //设置自动轮播 if (obj.isAutoplay) { timerId = setInterval(function () { setPlay('down'); }, duration); //鼠标放上中止轮播 swiper.addEventListener('mouseenter', function () { clearInterval(timerId); }); //鼠标离开继续轮播 swiper.addEventListener('mouseleave', function () { timerId = setInterval(function () { setPlay('down'); }, duration); }); } //封装函数,设置图片与分页按钮一一对应 function setPlay(direction) { if (direction === 'up') { currentIndex --; if (currentIndex < 0) { currentIndex = swiperItems.length - 1; } }else if (direction === 'down') { currentIndex ++; if (currentIndex > swiperItems.length - 1) { currentIndex = 0; } } //图片排他,分页按钮排他 swiperItems.forEach(function (swiperItem, index) { swiperItem.classList.remove('actived'); if (obj.pagination) { paginationItems[index].classList.remove('actived'); } }); //当前图片显示 swiperItems[currentIndex].classList.add('actived'); if (obj.pagination) { //当前分页按钮高亮 paginationItems[currentIndex].classList.add('actived'); } } } //暴露方法 w.swiper = swiper;})(window);