html + css + js 都写在一起。
代码如下:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script src="js/animate.js"></script>
</head>
<style>
* {
margin: 0;
padding: 0;
}
li {
list-style-type: none;
}
a {
text-decoration: none;
}
.header_nav {
position: relative;
width: 1200px;
margin: 50px auto;
}
.swiper {
position: relative;
height: 460px;
overflow: hidden;
}
.swiper_button_last {
position: absolute;
top: 210px;
left: 0;
width: 41px;
height: 69px;
background: url('img/button.png') no-repeat -84px 50%;
z-index: 9999;
}
.swiper_button_last:hover {
background: url('img/button.png') no-repeat 0px 50%;
}
.swiper_button_next {
position: absolute;
top: 210px;
right: 0;
width: 41px;
height: 69px;
background: url('img/button.png') no-repeat -125px 50%;
z-index: 9999;
}
.swiper_button_next:hover {
background: url('img/button.png') no-repeat -42px 50%;
}
.swiper_slide {
position: absolute;
top: 0;
left: 0;
width: 500%;
height: 460px;
}
.swiper_slide li {
float: left;
}
.swiper_slide li a img {
width: 1200px;
height: 460px;
}
.swiper_circle {
position: absolute;
bottom: 50px;
right: 25px;
}
.swiper_circle li {
float: left;
width: 10px;
height: 10px;
border-radius: 10px;
border: 1px solid #ccc;
margin-left: 10px;
}
.add_bg {
background-color: white;
}
</style>
<script>
window.addEventListener('load', function() {
// 1.获取元素
var swiper = document.querySelector('.swiper')
var swiper_button_next = document.querySelector('.swiper_button_next');
var swiper_button_last = document.querySelector('.swiper_button_last');
var swiper_slide = document.querySelector('.swiper_slide');
var swiper_circle = document.querySelector('.swiper_circle');
// 1.1元素的其他属性
var swiperWidth= swiper.offsetWidth; // 获取 swiper 盒子宽度
// 2.事件
// 当鼠标进入
swiper_slide.addEventListener('mouseenter', function() {
clearInterval(timer);
timer = null; // 清除定时器变量
})
// 当鼠标离开
swiper_slide.addEventListener('mouseleave', function() {
timer = setInterval(function() {
swiper_button_next.click(); // 手动调用点击事件
}, 3000)
})
// 自动生成小圆圈
for(var i = 0; i < swiper_slide.children.length; i++) {
var li = document.createElement('li');
li.setAttribute('index', i) // 给li 添加属性 索引号
swiper_circle.appendChild(li);
li.addEventListener('click', function() {
for(var i = 0; i < swiper_circle.children.length; i++) {
swiper_circle.children[i].className = ''; // 清空所有 li 的 类名
}
this.className = 'add_bg'; // 给点击的 li 添加类名
var index = this.getAttribute('index'); // 获取 li index属性 这里必须用 this
num = index; // 为了跟 小圆圈 同步
circle = index; // 为了跟 小圆圈 同步
animate(swiper_slide, -index * swiperWidth); // 调用动画函数
})
}
swiper_circle.children[0].className = 'add_bg'; // 一打开页面 第一个 小圆圈加背景
// 轮播图克隆第一张图片
var kelong = swiper_slide.children[0].cloneNode(true); // 加 true 深度克隆第一张图片
swiper_slide.appendChild(kelong); // 把克隆的图片放在 swiper_slide 盒子里
var num = 0; // 记录第几个
var circle = 0; // 记录小圆圈第几个
var flag = true; // 节流阀:防止点击过快 (展示完一张图再进行下一次点击事件
// 下一张 点击事件
swiper_button_next.addEventListener('click', function() {
if(flag) {
flag = false; // 关闭节流阀 关闭点击事件
if(num == swiper_slide.children.length - 1) {
swiper_slide.style.left = 0;
num = 0;
}
num ++; // 点击一次+1
animate(swiper_slide, -num * swiperWidth, function() {
flag = true; // 打开节流阀 开启点击事件 (在动画结束后开启
});
circle ++;
if(circle == swiper_circle.children.length){
circle = 0;
}
circleChange();
}
})
// 上一张 点击事件
swiper_button_last.addEventListener('click', function() {
if(flag) {
flag = false; // 关闭节流阀 关闭点击事件
if(num == 0){
num = swiper_slide.children.length - 1;
swiper_slide.style.left = -num * swiperWidth + 'px';
}
num --;
animate(swiper_slide, -num * swiperWidth, function() {
flag = true; // 打开节流阀 开启点击事件 (在动画结束后开启
});
circle --;
if(circle < 0) {
circle = swiper_circle.children.length - 1;
}
circleChange();
}
})
// 小圆圈排他思想函数
function circleChange() {
for(var i = 0; i < swiper_circle.children.length; i++) {
swiper_circle.children[i].className = '';
}
swiper_circle.children[circle].className = 'add_bg';
}
// 轮播图自动播放
var timer = setInterval(function() {
swiper_button_next.click();
}, 3000)
})
</script>
<body>
<div class="header_nav">
<!-- 轮播图 -->
<div class="swiper">
<!-- 下一张图 -->
<div class="swiper_button_next"></div>
<!-- 上一张图 -->
<div class="swiper_button_last"></div>
<!-- 图片 -->
<ul class="swiper_slide">
<li><a href="javascript:;" class=""><img src="img/lunbo1.jpg" alt=""></a></li>
<li><a href="javascript:;" class=""><img src="img/lunbo2.jpg" alt=""></a></li>
<li><a href="javascript:;" class=""><img src="img/lunbo3.jpg" alt=""></a></li>
</ul>
<!-- 小圆圈 -->
<ol class="swiper_circle"></ol>
</div>
</div>
</body>
</html>
效果如下: