zoukankan      html  css  js  c++  java
  • 3、js无缝滚动轮播

            另一个无缝滚动轮播,带暂停,由于js是异步,用C面向过程的思想开始会很怪异很怪异,因为当你定时器里面需要执行的函数时间比较长或是有一段延时时,异步的代码会完全不同,但习惯就好了。

      这个代码有几个问题,后续会优化:

      1、由于css定位margin的问题,并非几张轮播的图片移动的距离一致,故而你会看到两个很冗余的if代码,那个判断都固定死了

      2、这种定时器嵌套理解起来比较容易,但有一个较大的问题是:当执行到setTimeout时,你会发现鼠标移入移出暂停轮播的效果失效,因为这是程序执行的是一段空的延时,才会出现这样

      3、要实现带暂停的轮播,上面有这两个缺陷,用户体验会有一丢丢不perfect,当然有更好更高级的方式实现,这里就当做自己刚入门的一段回忆好了。

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>js-text</title>
        <style>
            html,body,div,ul,li{margin:0;padding:0}
            .div11{width:895px;height:165px;margin:300px auto 0;position:relative;border-radius:10px;
            overflow:hidden}
            #div1 ul{position:absolute;left:0;top:0;}
            #div1 ul li{width:220px;height:165px;float:left;list-style:none;margin:0 2px;}
            #div1 ul img{width:220px;height:165px;border-radius:10px;}
            /*#div1 img{33px;height:33px;}*/
            .cDirection {width:955px;height:30px;margin:0 auto;}
            .cDirection img{width:30px;height:30px;}
            .cDirection .right{float:right}
            body{background:url("images/background2.jpg")}
        </style>
        <script>
            window.onload=function (){
                var oDiv1=document.getElementById('div1');
                var oDiv2=document.getElementById('direction');
                var oUl=oDiv1.getElementsByTagName('ul')[0];
                var oLi=oDiv1.getElementsByTagName('li');
                var oA=oDiv2.getElementsByTagName('a');
                var nSpeed=2;
                var time;
                var flag=0;
                oUl.style.width=(oLi[0].offsetWidth+4)*oLi.length+'px';
                function move(){
                        if(oUl.offsetLeft<-oUl.offsetWidth/2){
                            oUl.style.left='0';
                        }
                        if(oUl.offsetLeft>0){
                            oUl.style.left=-oUl.offsetWidth/2+'px';
                        }
                        oUl.style.left=oUl.offsetLeft+nSpeed+'px';
    //                    console.log(oUl.offsetLeft);
                }
                var lunBo=function(){
                    clearInterval(time);
    
                    time=setInterval(function(){
                        move();
    //                    if((oUl.offsetLeft)%(oLi[0].offsetWidth+nSpeed)==0&&oUl.offsetLeft!=-888)
                        if((oUl.offsetLeft==-670||oUl.offsetLeft==-446||oUl.offsetLeft==-222||oUl.offsetLeft==0)&&nSpeed==2)
                        {
                            clearInterval(time);
                            setTimeout(function(){
                                lunBo();
                            },1000);
                        }
                        if((oUl.offsetLeft==-670||oUl.offsetLeft==-446||oUl.offsetLeft==-222||oUl.offsetLeft==-894)&&nSpeed==-2)
                        {
                            clearInterval(time);
                            setTimeout(function(){
                                lunBo();
                            },1000);
                        }
                    },10);
                };
    //            var newLunBo=new lunBo();
                lunBo();
                oDiv1.onmouseover=function (){clearInterval(time)};
                oDiv1.onmouseout=function (){lunBo()};
                oA[0].onmouseover=function (){nSpeed=-2};
                oA[1].onmouseover=function (){nSpeed=2};
            };
        </script>
    </head>
    <body>
    <div class="div11" id="div1">
        <ul>
            <li><a href="javascript:"><img src="images/picture1.png" alt="1"></a></li>
            <li><a href="javascript:"><img src="images/picture2.png" alt="2"></a></li>
            <li><a href="javascript:"><img src="images/picture3.png" alt="3"></a></li>
            <li><a href="javascript:"><img src="images/picture4.png" alt="4"></a></li>
            <li><a href="javascript:"><img src="images/picture1.png" alt="1"></a></li>
            <li><a href="javascript:"><img src="images/picture2.png" alt="2"></a></li>
            <li><a href="javascript:"><img src="images/picture3.png" alt="3"></a></li>
            <li><a href="javascript:"><img src="images/picture4.png" alt="4"></a></li>
        </ul>
    
    </div>
    <div class="cDirection" id="direction">
        <a href="javascript:"><img src="images/left1.png" alt=""></a>
        <a class="right" href="javascript:"><img src="images/right1.png" alt=""></a>
    </div>
    </body>
    </html>
  • 相关阅读:
    微信小程序 简单控件
    #负分小组WEEK1#一个开头&小组介绍
    CountDownLatch使用场景及分析
    Markdown基础语法
    【转】awk的使用及字符串的操作
    【开篇有益】敢问路在何方,佛曰路就在脚下
    【EntityFramework 6.1.3】个人理解与问题记录(2)
    EETOOL简介
    VMware 安装失败 “Failed to create the requested registry key Key:installer Error:1021"
    vs2010调试时为什么会出现clr.dll与mscordacwks.dll版本不匹配?
  • 原文地址:https://www.cnblogs.com/dorseych/p/8196018.html
Copyright © 2011-2022 走看看