zoukankan      html  css  js  c++  java
  • js特效系列-1定时器的使用

    定时器的使用:setInterval与setTimeout的区别
    setInterval(函数,时间间隔)  每隔一段时间执行一下函数动作,且如果不关闭定时器将一直执行下去
    setTimeout(函数,时间间隔)  隔一段时间执行一下函数动作,不过只执行一次。一次过后将不再执行。
    如:
     setInterval(function(){
        alert("a");
    },1000)  每隔一秒会弹出alert("a")
     setTimeout(function(){
        alert("a");
    },1000)  过一秒后会弹出alert("a") 但弹出之后将不再弹出。也就是说setTimeout只执行一次做延迟操作。

    案例:时间图片滚动特效:

      

     <body>
            <div id="test" >
                <img src="images/1.png" />
                <img src="images/1.png" />
                <img src="images/2.png" />
                <img src="images/3.png" />
                <img src="images/4.png" />
                <img src="images/5.png" />
            </div>
            <script type="text/javascript">
                //该函数用于时分秒做处理,未满十在前面自动加0
                function trans(value){
                    if(value<10){
                        return "0"+value;
                    }else{
                        return ""+value;
                    }
                }
                function time(){
                    var date=new Date();
                    var hours=date.getHours();
                    var minutes=date.getMinutes();
                    var seconds=date.getSeconds();
                    //var string="114125";
                    var string=trans(hours)+trans(minutes)+trans(seconds);
                    var images=document.getElementsByTagName("img");
                    for(var i=0;i<images.length;i++){
                        images[i].src="images/"+string[i]+".png";
                    }
                }
                setInterval(time,1000);
                //调用time()函数解决页面加载时显示本地时间问题
                time();
            </script>
        </body>



    clearInterval(setInterval句柄)与clearTimeout(setTimeout句柄)函数分别用于清除设置的定时器
    charAt方法得到字符串指定索引的值:string="absc" ; string.charAt(1)得到的是b

    案例:setTimeout与clearTimeout的使用
     延时效果

    <html>
        <head>
            <title>argument的使用</title>
            <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
            <style type="text/css">
                #div1{
                    100px;
                    height:50px;
                    background:blue;
                    float:left;
                    margin-right:20px;
                }
                #div2{
                    200px;
                    height:100px;
                    background:red;
                    float:left;
                    display:none;
                }
            </style>
        </head>
        <body>
            <div id="div1">
                
            </div>
            <div id="div2">
                
            </div>
            <script type="text/javascript">
                //移动div1时div2显示出来,并延时显示,移出div2后消失
                var oDiv1=document.getElementById("div1");
                var oDiv2=document.getElementById("div2");
                var time=null;
                oDiv1.onmouseover=function(){
                    clearTimeout(time);
                    oDiv2.style.display="block";
                }
                oDiv1.onmouseout=function(){
                    // 鼠标移动来的时候 延时0.5秒消失
                    time=setTimeout(function(){
                        oDiv2.style.display="none";
                    },500);
                }
                oDiv2.onmouseover=function(){
                    //清除定时器,也就是让display为block
                    clearTimeout(time);
                    
                }
                oDiv2.onmouseout=function(){
                    //设置定时器使display为none
                    time=setTimeout(function(){
                        oDiv2.style.display="none";
                    },500);
                }
    
                
            </script>
        </body>
    </html>



    案例:图片无缝滚动 offsetLeft/offsetTop/offsetWidth/offsetHeight
     offsetLeft为左边距

     <html>
        <head>
            <title>无缝轮播特效</title>
            <meta http-equiv="Content-Type" content="charset=utf-8"/>
            <style type="text/css">
                #div1{
                    margin:50px auto;
                    800px;
                    height:200px;
                    background:red;
                    position:relative;
                    overflow:hidden;
                }
                #div1 ul{
                    border:solid 1px #ccc;
                    margin-top:20px;
                    800px;
                    height:100px;
                    position:absolute;
                    float:left;
    
                }
                #div1 ul li{
                    list-style:none;
                    float:left;
                    200px;
                    height:100px;
                    
                }
                #div1 ul li img{
                    float:left;
                    margin-left:0px;
                    200px;
                    height:100px;
                }
            </style>
        </head>
        <body>
            <a href="#" id="left">向左滚</a>
            <a href="#" id="right">向右滚</a>
            <div id="div1">
                <ul>
                    <li><img src="images/zxy1.jpg"></li>
                    <li><img src="images/zxy2.jpg"></li>
                    <li><img src="images/zxy3.jpg"></li>
                    <li><img src="images/zxy4.jpg"></li>
                </ul>
            </div>
            <script type="text/javascript">
                 var oDiv1=document.getElementById("div1");
                var oUl=oDiv1.getElementsByTagName("ul")[0];
                var lis=oUl.getElementsByTagName("li");
                oUl.innerHTML+=oUl.innerHTML; //将图片拷贝一份用于轮播
                //ul的宽度等于
                oUl.style.width=lis[0].offsetWidth*lis.length+'px';
                var speed=2;
                var oA1=document.getElementById("left");
                var oA2=document.getElementById("right");
                //左滚
                oA1.onclick=function(){
                    speed=-2;
                }
                //右滚
                oA2.onclick=function(){
                    speed=+2;
                }
                //移动函数
                function move(){
                    //左移(即oUl.offsetLeft-2) 当图片往左边移动到一半的时候重新UL左边距设置为0
                     if(oUl.offsetLeft<-oUl.offsetWidth/2){
                         oUl.style.left=0;
                     }
                     //右移(即oUl.offsetLeft+2) 如果图片往右边移动到超出左边的边界时将UL重新挪到左边来
                     if(oUl.offsetLeft>0){
                         oUl.style.left=-oUl.offsetWidth/2;
                     }
                     oUl.style.left=oUl.offsetLeft+speed+'px';
                }
                 var timer=setInterval(move,30);
                 //当鼠标移入UL的时候关闭定时器
                 oUl.onmouseover=function(){
                     clearInterval(timer);
                 }
                 oUl.onmouseout=function(){
                     timer=setInterval(move,30);
                 }
            </script>
        </body>
    </html>
  • 相关阅读:
    北京Uber优步司机奖励政策(12月9日)
    滴滴快车奖励政策,高峰奖励,翻倍奖励,按成交率,指派单数分级(12月9日)
    北京Uber优步司机奖励政策(12月8日)
    js中的json对象和字符串之间的转化
    fiddler Android下https抓包全攻略
    滴滴快车奖励政策,高峰奖励,翻倍奖励,按成交率,指派单数分级(12月7日)
    Android手机 Fildder真机抓包
    Android系统手机端抓包方法
    百度地图API示例之添加/删除工具条、比例尺控件
    百度地图API示例之设置级别setZoom与禁止拖拽disableDragging
  • 原文地址:https://www.cnblogs.com/luodao1991/p/3193920.html
Copyright © 2011-2022 走看看