轮播图效果

轮播图效果制作

<!DOCTYPE html>
  <html>
     <head>
     	  <meta charset="utf-8">
     	  <title>轮播图练习</title>
     	  <style type="text/css">
     	  	*{
     	  		margin: 0;
     	  		padding:0;
     	  	}
     	  	/*
            设置outer的样式
     	  	*/
     	  	#outer{
     	  		width:320px;
     	  		height: 400px;
     	  		margin: 50px auto;
     	  		background-color: yellow;
     	  		padding: 10px 0;
              position: relative;
              /*裁剪溢出的内容*/
             overflow: hidden;
     	  	}
     	  	/*设置imglist*/
           #imgList{
              /*去除项目符号*/
              list-style: none;
            /*  width: 1600px;*/
            position: absolute;
            /*每向左移动320px*/
            left: 0px;
           }
           /*设置图片的Li*/
           #imgList li{
              /*设置图片的浮动*/
              float: left;
              margin:0 10px;
           }
           /*设置导航按钮*/
           #navDiv{
              position: absolute;
              bottom:15px;
           }
           #navDiv a{
              float: left;
              width:15px;
              height: 15px;
              background-color: red;
              margin:0 5px;
              /*设置透明*/
              opacity: 0.5;
              /*兼容ie8*/
              filter:alpha(opacity=50);
           }
           #navDiv a:hover{
              background-color: black;
           }     	  	
     	  </style>
          <script type="text/javascript" src="js/tools.js"></script>
          <script type="text/javascript">
             window.onload = function(){
              //设置imgList宽度
              //获取imgList
              var imgList = document.getElementById("imgList");
              //获取页面中所有的img标签
              var imgArr = document.getElementsByTagName("img");
              //设置imgList的宽度
              imgList.style.width = 320*imgArr.length+"px";

              // 设置导航按钮居中
              //获取navDiv
              var navDiv = document.getElementById("navDiv");
              //获取outer
              var outer = document.getElementById("outer");
              //设置navDiv的left值
              navDiv.style.left = (outer.offsetWidth - navDiv.offsetWidth)/2 + "px";
              
              //默认显示图片的索引
             var index = 0;
             //获取所有a
             var allA = document.getElementsByTagName("a");
             // //设置默认选中地效果
             allA[index].style.backgroundColor = "black";

             /*
              点击超链接切换到指定图片
             */
             //为所有的超链接绑定单击响应函数
             for(var i = 0;i<allA.length ; i++){
              //为每一个超链接都添加一个num属性
              allA[i].num = i;

              //为超链接绑定单击响应函数
              allA[i].onclick = function(){
                //关闭定时器
                clearInterval(timer);
               //获取点击超链接的索引,并将其设置为index
               index = this.num;

               //切换图片
               // imgList.style.left = -320*index +"px";
                  setA();

                //使用move函数来切换图片
                move(imgList,"left",-320*index,20,function(){
                      //动画执行完毕,开启自动切换
                      autoChange();
                });
               
               //修改正在选中的a          
              };
             }
             //创建一个函数,自动切换图片
             autoChange();



             //创建一个方法用来设置选中a
             function setA(){
              //判断当前索引是否最后一张图片
              if(index >= imgArr.length-1){
                //将index设置为0
                index = 0;

                //此时显示的最后一张图片,而最后一张图片和第一张是一模一样,通过css将最后一张切换成第一张
                imgList.style.left = 0;


              }
                //遍历所有a ,并将它们的背景颜色设置为红色
                for(var i=0 ; i<allA.length ; i++){
                    allA[i].style.backgroundColor = "";
                }

                //将选中的a设置为黑色
                allA[index].style.backgroundColor = "black";
             };
             var timer;
             //创建一个函数,开启自动切换
             function autoChange(){
                 //开启定时器,自动切换图片
                 timer = setInterval(function(){
                   index++;
                   //判断index值
                   index %= imgArr.length;
             move(imgList,"left",-320*index,20,function(){
                    //修改导航按钮
                    setA();
                });    
                 },3000);
             }
         };
             

          </script>
     </head>
     <body>
     	<!-- 创建一个外部div,来作为大的容器 -->
     	<div id="outer">
     		<!-- 创建一个ul 用于放置图片 -->
     		<ul id="imgList">
     			<li>
     				<img src="img/1.jpg"/>
     			</li>
     			<li>
     				<img src="img/2.jpg"/>
     			</li>
     			<li>
     				<img src="img/3.jpg"/>
     			</li>
     			<li>
     				<img src="img/4.jpg"/>
     			</li>
              <li>
                 <img src="img/5.jpg"/>
              </li>
          <li>
            <img src="img/1.jpg"/>
          </li>

     		</ul>
           <!-- 创建导航按钮 -->
           <div id="navDiv">
              <a href="javascript:;"></a>
              <a href="javascript:;"></a>
              <a href="javascript:;"></a>
              <a href="javascript:;"></a>
              <a href="javascript:;"></a>
           </div>
     	</div>
     </body>
  </html>

注意:调用move函数:可以引入外部文件
//尝试创建一个可以执行简单动画的函数
/*

  • 参数:
  • obj:要执行动画的对象
  • attr:要执行动画的样式,比如:left top width height
  • target:执行动画的目标位置
  • speed:移动的速度(正数向右移动,负数向左移动)
  • callback:回调函数,这个函数将会在动画执行完毕以后执行
    */
    function move(obj, attr, target, speed, callback) {
    //关闭上一个定时器
    clearInterval(obj.timer);

//获取元素目前的位置
var current = parseInt(getStyle(obj, attr));

//判断速度的正负值
//如果从0 向 800移动,则speed为正
//如果从800向0移动,则speed为负
if(current > target) {
//此时速度应为负值
speed = -speed;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值