• 右下角弹窗广告范例


     1 <!DOCTYPE html>
     2 <html>
     3 <head lang="en">
     4     <meta charset="UTF-8">
     5     <title></title>
     6     <link rel="stylesheet" href="css/ad.css"/>
     7 </head>
     8 <body>
     9 <div id="adver">
    10     <a href="javascript:adv.moveDown()">×</a>
    11 </div>
    12 <script>
    13 var adv={
    14     DISTANCE:0,      //弹出的距离
    15     DURATION:2000,   //
    16     STEPS:400,
    17     interval:0,
    18     step:0,
    19     adv:null,       //对象
    20     WAIT:3000,
    21     moved:0,        //已经移动的步数
    22     init:function(){
    23         //获取广告区域对象id为adver的div
    24         this.adv=document.getElementById('adver');
    25         //获取adv计算后的height,保存在DISANCE属性中
    26         this.DISTANCE=parseFloat(
    27                 getComputedStyle(this.adv).height
    28         );
    29         //计算interval=DURATION/STEPS
    30         this.interval=this.DURATION/this.STEPS;
    31         //计算step=DISTANCE/STEPS
    32         this.step=this.DISTANCE/this.STEPS;
    33         debugger;
    34         this.move(1);//调用this.moveUp()启动上移
    35     },
    36     move:function(dir,callback){//启动上移
    37         //启动周期性定时器,传入任务函数moveUpStep,设置时间间隔为interval, 将序号保存在timer属性中
    38         this.timer=setInterval(
    39                 this.moveStep.bind(this,dir,callback),
    40                 this.interval
    41         );
    42     },
    43     moveStep:function(dir,callback){//上移一步
    44         //获得adv计算后的bottom
    45         var bottom=parseFloat(
    46                 getComputedStyle(this.adv).bottom
    47         );
    48         //设置adv的bottom为bottom+this.step
    49         this.adv.style.bottom=
    50                 bottom+dir*this.step+"px";
    51         this.moved++;
    52         //如果moved等于STEPS
    53         if(this.moved==this.STEPS){//动画结束
    54             //停止定时器,清空timer, moved归0
    55             clearInterval(this.timer);
    56             this.timer=null;
    57             this.moved=0;
    58             if(callback){
    59                 callback();
    60             }
    61         }
    62     },
    63     moveDown:function(){
    64         //如果?
    65         if(this.timer==null){//防动画叠加!
    66             this.move(-1,function(){
    67                 //启动一次性定时器: 传入任务函数move,提前绑定this和1, 设置等待时间为WAIT
    68                 setTimeout(
    69                         this.move.bind(this,1),this.WAIT   //这里是判断回调函数的依据
    70                 );
    71             }.bind(this));  //这里绑定一定要 绑定回callback
    72         }
    73     }
    74 }
    75 adv.init();//this->adv
    76 </script>
    77 </body>
    78 </html>
    #adver{
         200px;
        height:200px;
        position: fixed;
        bottom:-200px;
        right: 0px;
        background: #f0f0f0;
    }
    #adver>a{
        float: right;
    }
    

      

  • 相关阅读:
    CentOS常用的文件操作命令总结
    消息队列技术
    net license tool, EasyLicense !
    Socket、Session、Option和Pipe
    安全配置基线Linux系统
    SolrCloud
    线性表
    微服务系统中的认证策略
    How to use JDBC-Authentication of Spring Boot/Spring Security with Flyway
    使用Akka、Kafka和ElasticSearch等构建分析引擎 -- good
  • 原文地址:https://www.cnblogs.com/samdx/p/6142578.html
Copyright © 2020-2023  润新知