<!DOCTYPE html>
<html>
<head>
 <title>轮播图 1</title>
 <style type="text/css">
 ul{
 list-style: none;
 }
 .imgs{
 width:590px;
 height:470px;
 overflow: hidden;
 }
 .dots{
 width:164px;
 position:absolute;
            left:250px;
            top:450px;
            z-index: 999;
 }
        .dot{
            width:10px;
            height:10px;
            border:2px solid #fff;
            border-radius:10px;
            display: inline-block;
 }
 </style>
</head>
<body>
 <div class="ad">
 <ul id="imgs" class="imgs">
 <li  class="img_li"><img src="img/1.jpg"></li>
 <li  class="img_li"><img src="img/2.jpg"></li>
 <li  class="img_li"><img src="img/3.jpg"></li>
 <li  class="img_li"><img src="img/4.jpg"></li>
 <li  class="img_li"><img src="img/5.jpg"></li>
 <li  class="img_li"><img src="img/6.jpg"></li>
 </ul>
 <ul class="dots">
 <li data=‘0‘ class="dot" style="</li>
 <li data=‘1‘ class="dot"></li>
 <li data=‘2‘ class="dot"></li>
 <li data=‘3‘ class="dot"></li>
 <li data=‘4‘ class="dot"></li>
 <li data=‘5‘ class="dot"></li>
 </ul>
 </div>
 
<script type="text/javascript">
 //简单轮播图 1  图片自动切换
 //写法 1 设置定时器  移动图片
 // setInterval(function(){
 // //每隔一秒,将第一张图片移动到最后
 // //获取第一张图片的 li
 // // var li = document.querySelectorAll(‘.img_li‘)[0];
 // var li = document.querySelector(‘.img_li‘);
 // var ul = document.getElementById(‘imgs‘);
 // // var li = ul.firstElementChild;
 // //将第一个 li 子元素 放到 ul 的最后一个子元素 位置
 // ul.appendChild(li); //appendChild 向父元素 添加最后一个子元素
 // }, 1000);
 
 //写法 2 设置定时器 通过 css 进行控制图片的显示和隐藏
 // var num = 0;
 // setInterval(function(){
 // num++;
 // //先将所有的图片都隐藏
 // //获取所有的图片 li
 // var img_lis = document.querySelectorAll(‘.img_li‘);
 // //遍历数组,对每一张图片的 li,设置 css 样式 display none
 // for(var i=0; i<img_lis.length; i++){
 // // img_lis[i]  一个一个的 li 标签
 // img_lis[i].style.display = ‘none‘;
 // }
 // //将下标为 num 图片显示  对 num 下标的图片 li,设置设置 css 样式 display block
 // if(num == img_lis.length){
 // // 0 1 2 3 4 5  0 1 2 3 4 5 
 // num = 0;
 // }
 // img_lis[num].style.display = ‘block‘;
 // }, 1000);
 // 
 // 
 // 
 //简单轮播图 2  鼠标悬浮切换图片
 //1) 使用自定义属性,保存小白圈下标
 //先获取所有的小白圈的 li
 // var dot_lis = document.querySelectorAll(‘.dot‘);
 //遍历绑定鼠标悬浮事件
 // for(var i=0; i<dot_lis.length; i++){
 // //逐个绑定事件
 // dot_lis[i].onmouseover = function(){
 // //先隐藏所有图片,给所有的小白圈去掉背景色
 // var img_lis = document.querySelectorAll(‘.img_li‘);
 // for(var j=0; j<img_lis.length; j++){
 // img_lis[j].style.display = ‘none‘;
 // dot_lis[j].style.backgroundColor = ‘‘;
 // }
 // //当前的小白圈加背景色
 // this.style.backgroundColor = ‘white‘;
 // //显示对应的图片
 // // 获取当前小白圈的下标,用于获取对应的图片
 // // console.log( this );
 // // console.log( this.getAttribute(‘data‘) );
 // // 在小白圈的 li 上自定义一个 data 属性 记录对应的下标
 // var index = this.getAttribute(‘data‘);
 // img_lis[index].style.display = ‘block‘;
 // }
 // }
 // 
 // 使用匿名函数自调用,保存下标 i
 // var dot_lis = document.querySelectorAll(‘.dot‘);
 // for(var i=0; i<dot_lis.length; i++){
 // (function(i){ // for 循环 绑定事件,事件中 i 丢失问题
 // // 函数形参 相当于在函数内部使用 var 定义了一个局部变量 var i = i;
 // //逐个绑定事件
 // dot_lis[i].onmouseover = function(){
 // //先隐藏所有图片,给所有的小白圈去掉背景色
 // var img_lis = document.querySelectorAll(‘.img_li‘);
 // for(var j=0; j<img_lis.length; j++){
 // img_lis[j].style.display = ‘none‘;
 // dot_lis[j].style.backgroundColor = ‘‘;
 // }
 // //当前的小白圈加背景色
 // this.style.backgroundColor = ‘white‘;
 // //显示对应的图片
 // // 获取当前小白圈的下标,用于获取对应的图片
 // // console.log(i);
 // img_lis[i].style.display = ‘block‘;
 // }
 // })(i);
 // }
</script>
<script type="text/javascript">
 //整合综合效果
 //封装一个函数,根据一个数字参数,显示指定的图片
 function change(n){
 // 获取所有的图片 li、获取所有小白圈 li
 var img_lis = document.querySelectorAll(‘.img_li‘);
 var dot_lis = document.querySelectorAll(‘.dot‘);
 //遍历数组
 for(var i=0; i<img_lis.length; i++){
 //将所有的图片都隐藏
 img_lis[i].style.display = ‘none‘;
 //将所有的小白圈背景色去掉
 dot_lis[i].style.backgroundColor = ‘‘;
 }
 //根据下标参数 n,将指定的图片显示
 img_lis[n].style.display = ‘block‘;
 //根据下标参数 n,将指定的小白圈背景色加上
 dot_lis[n].style.backgroundColor = ‘white‘;
 }
 
 //自动切换  num 变量 和 timer 变量 一定要是全局变量
 var num = 0;
 // var timer = setInterval(function(){
 // //获取所有的图片的 li,用于后续获取长度
 // var img_lis = document.querySelectorAll(‘.img_li‘);
 // num++;
 // //num 是作为下标,显示图片的,不能超出最大下标
 // if(num == img_lis.length){
 // num = 0;
 // }
 // //根据 num 显示对应的图片
 // change(num);
 // }, 1000);
 var timer;
 function setTimer(){
 timer = setInterval(function(){
 //获取所有的图片的 li,用于后续获取长度
 var img_lis = document.querySelectorAll(‘.img_li‘);
 num++;
 //num 是作为下标,显示图片的,不能超出最大下标
 if(num == img_lis.length){
 num = 0;
 }
 //根据 num 显示对应的图片
 change(num);
 }, 1000);
 }
 setTimer();
 //鼠标悬浮切换图片
 //获取所有的小白圈,循环绑定事件
 var dot_lis = document.querySelectorAll(‘.dot‘);
 for(var i=0; i<dot_lis.length; i++){
 (function(i){
 //函数内部 i 变成了局部变量
 dot_lis[i].onmouseover = function(){
 //鼠标悬浮小白圈,停止自动切换的定时器
 clearInterval(timer);
 //获取悬浮的小白圈的下标
 //调用 change 函数
 change(i);
 //如果需要让自动切换图片按照以前顺序继续,则设置 num 的值为 i
 num = i;
 }
 //鼠标离开小白圈,重新设置定时器
 dot_lis[i].onmouseout = function(){
 //调用封装的设置定时器的函数
 setTimer();
 }
 })(i);
 
 }
</script>
</body>
</html>
轮播图练习
原文:https://www.cnblogs.com/zgn521019/p/14233822.html