zoukankan      html  css  js  c++  java
  • 原生javascript焦点轮播图

    刚刚学会,写了一个轮播图效果,不过bug蛮多,请高手指点一下,谢谢

    1. <!DOCTYPE html>
    2. <html>
    3. <head>
    4.     <meta charset="utf-8">
    5.     <title>电影轮播图</title>
    6.     <style type="text/css">
    7.         *{margin:0;padding: 0;list-style: none;}
    8.         body{}
    9.         #container{1000px;height:409px;position:relative;margin:20px auto;overflow: hidden;}
    10.         #list{5000px;height:409px;position:absolute;z-index: 1}
    11.         #list img{float:left;display: block;}
    12.         #pre{background-image:urlhttp://www.w3cfuns.com/data/attachment/album/201411/17/153459b7h8s70shfr2hwrd.png);45px;height:45px;float:left;position:absolute;top:190px;left:10px;cursor:pointer;display:none;z-index: 2;}
    13.         #next{background-image: url(http://www.w3cfuns.com/data/attachment/album/201411/17/153459g52888zwz1wa11tm.png);45px;height:45px;float: left;position:absolute;top:190px;right:10px;cursor:pointer;display:none;z-index: 2;}
    14.         #container:hover #pre,#container:hover #next{display: block;}
    15.         #pre:hover,#next:hover{background-color: rgba(0,0,0,0.7);   }
    16.         #dot{1000px;height:10px;position:absolute;bottom:15px;left:450px;z-index: 10;}

    17.         #dot span{10px;height:10px;display:block;border-radius:10px;background-color: #fff;margin:0 5px;float: left;cursor:pointer;}
    18.        
    19.         #dot .on{background-color: #69aaec;}
    20.     </style>
    21.     <script type="text/javascript">
    22.         window.onload = function(){
    23.             var container = document.getElementById('container');//定义container,获取container id;
    24.             var list = document.getElementById('list');//定义list,获取list id;
    25.             var dot = document.getElementById('dot').getElementsByTagName('span');//定义dot ,获取dot id;
    26.             var pre = document.getElementById('pre');//定义 pre(上一张),获取pre id;
    27.             var next = document.getElementById('next');//定义next(下一张),获取next id;
    28.             var index = 1;//定义index初始值

    29.             var animated = false;

    30.             function showDot(){//遍历圆点的滚动状态
    31.                 for(var i = 0;i < dot.length;i++){
    32.                     if(dot[i].className == 'on')//判断圆点的className是否为'on'的状态,
    33.                     {
    34.                         dot[i].className = '';//如果是的话,就显示初始值;
    35.                         break;//显示初始值之后跳出函数;
    36.                     }
    37.                 }
    38.                 dot[index - 1].className = 'on';//因为数组第一个从0开始
    39.             }
    40.             function animate(offset){//定义animated(offset)函数
    41.                 animated = true;
    42.                 var newLeft = parseInt(list.style.left) + offset  //定义一个newLeft 变量,赋值parseInt(list.style.left) + offset;
    43.                 var time = 500;//位移时间;
    44.                 var interval = 10;//位移间隔时间
    45.                 var speed = offset/(time/interval);//每次位移的距离;

    46.                 function go(){

    47.                     if( (speed < 0 && parseInt(list.style.left) > newLeft) || (speed > 0 && parseInt(list.style.left) < newLeft)){
    48.                         list.style.left = parseInt(list.style.left) + speed + 'px';
    49.                         setTimeout(go,interval);

    50.                     }
    51.                     else{
    52.                         animated = false;
    53.                         list.style.left = newLeft   +'px';//list.style.left的使用parseInt转换为数字
    54.                         if(newLeft > 0 ){//判断left是否大于初始位置,如果大于返回最小值
    55.                             list.style.left = -4000 + 'px';
    56.                         }
    57.                         if(newLeft < -4000){//判断left是否小于最小值,如果小于返回初始值
    58.                             list.style.left = 0 + 'px';
    59.                         }
    60.                     }

    61.                 }
    62.                 go();


    63.             
    64.             }
    65.             next.onclick = function(){
    66.                 if(index == 5){//判断index圆点的状态,如果等于最大值,那下一次就会回到最小值
    67.                     index =1;
    68.                 }else{//否则就按正常步骤,显示index+1;
    69.                     index += 1;
    70.                 }

    71.                 showDot();//调用函数showDot(),显示className='on';
    72.                 if(!animated){
    73.                 animate(-1000);//调用function animate(offset)函数,进行-1000操作,显示下一张图片
    74.                    }
    75.             }

    76.             pre.onclick = function(){
    77.                 if(index == 1){//判断index圆点的状态,如果等于最小值,那下一次就会回到最大值
    78.                     index =5;
    79.                 }else{//否则就按正常步骤,显示index-1;
    80.                     index -= 1;
    81.                 }

    82.                 showDot();//调用函数showDot(),显示className='on';
    83.                 if(!animated){
    84.                 animate(+1000);//调用function animate(offset)函数,进行+1000操作,显示上一张图片
    85.                 }
    86.             }
    87.             for(var i = 0;i < dot.length; i++){// 遍历dot长度
    88.                 dot[i].onclick = function(){//圆点单击时间函数
    89.                     if(this.className == 'on'){//判断该圆点是否已经被选中,如选中就返回,不执行之后的函数
    90.                         return;
    91.                     }
    92.                     var myIndex = parseInt(this.getAttribute('index'));//定义myIndex函数目标index(圆点)
    93.                     var offset = -1000 * (myIndex - index); //计算目标偏移的坐标    计算方式(目标index(myIndex) - 原index )* -1000
    94.                     if(!animated){
    95.                     animate(offset);//调用animated(offset)函数执行偏移的坐标值
    96.                     }
    97.                     index = myIndex;//将index函数返回为最新的myIndex数值
    98.                     showDot();//调用shouDot函数
    99.                    
    100.                 }
    101.             }

    102.             var timer = setInterval(next.onclick,3000) //自动切换时间设置 调用setInterval()函数,参数为:next.onclick,时间为3000
    103.             container.onmouseover = function(){//当鼠标悬在container容器上时,调用clearInterval,清除timer;
    104.                     clearInterval(timer);
    105.                 }
    106.             container.onmouseout = function(){//当鼠标移出container容器时,开始执行setInterval函数
    107.                 timer = setInterval(next.onclick,3000);//调用setInterval()函数,参数为:next.onclick,时间为3000
    108.             }
    109.         }
    110.     </script>
    111. </head>
    112. <body>
    113.     <div id="container">
    114.         <div id="pre"></div>
    115.         <div id="next"></div>
    116.         <div id="list" style="left:0px;">
    117.             <a href="#"><img src="http://www.w3cfuns.com/data/attachment/album/201411/17/153455iy401r4bm04456lr.jpg"></a>
    118.             <a href="#"><img src="http://www.w3cfuns.com/data/attachment/album/201411/17/153458yjegky9j4bigrkfy.jpg"></a>
    119.             <a href="#"><img src="http://www.w3cfuns.com/data/attachment/album/201411/17/153457zj2mtzcs40jtt2jt.jpg"></a>
    120.             <a href="#"><img src="http://www.w3cfuns.com/data/attachment/album/201411/17/153457t8loc5d5loylc6cg.jpg"></a>
    121.             <a href="#"><img src="http://www.w3cfuns.com/data/attachment/album/201411/17/153456zetzcexkk0npknnn.jpg"></a>
    122.         </div>
    123.         <div id="dot">

    124.                 <span index="1"class="on"></span>
    125.                 <span index="2"></span>
    126.                 <span index="3"></span>
    127.                 <span index="4"></span>
    128.                 <span index="5"></span>

    129.         </div>
    130.     </div>
    131. </body>
    132. </html>

    复制代码

    演示地址:HTTP://WWW.W3CFUNS.COM/BLOG-5441648-5402124.HTML 

  • 相关阅读:
    层次遍历二叉树时的一个技巧
    合并两个有序链表
    关于指针的引用和“||”运算符的一些心得
    UE4中显示AI Debug信息
    EQS 自定义Context 如何用Testing Pawn 进行测试?
    4.16中Montage的一些变化
    Move Controller UE4键位
    EQS
    获取文件完整路径快捷方法
    同步引擎版本号的简易方法
  • 原文地址:https://www.cnblogs.com/White-Quality/p/4103798.html
Copyright © 2011-2022 走看看