• javascript动画效果之匀速运动(修订版)


    在编写多块同时触发运动的时候,发现一个BUG,

    timer = setInterval(show, 30);本来show是一个自定义函数,
    当设为timer = setInterval(show(one,two), 30);时,发现show里面的参数one和two无法被导入,所以需要做以下代码改进和优化

    原版的html和css代码在这里javascript动画效果之匀速运动

    js代码如下

     1  <script>
     2         function $(id) {
     3             return typeof id === "string" ? document.getElementById(id) : id;
     4         }
     5 
     6         window.onload = function() {
     7 
     8             //定义变量
     9             var pto = $("div");
    10             var btn = $("show");
    11             var timer = null;
    12             var speed = 0;
    13 
    14             //鼠标移动绑定事件(一个无名函数)
    15             btn.onmouseenter = function() {
    16                     //调用自定义函数,传入参数0为pto.offsetLeft需要达到的距离
    17                     showPto(0);
    18                 }
    19                 //同理
    20             btn.onmouseleave = function() {
    21                 //同理
    22                 showPto(-200);
    23             }
    24 
    25             //自定义函数,one为自定义参数
    26             function showPto(one) {
    27                 //当前只需要一个定时器,所以需要在每次开始前清除定时器
    28                 clearInterval(timer);
    29                 //定义一个名为timer的定时器
    30                 timer = setInterval(function() {
    31                     if (one > pto.offsetLeft) {
    32                         //当0>pto.offsetLet时,pto需要被显示,所以speed为正值
    33                         speed = 10;
    34                     } else {
    35                         //同理,需要被隐藏时,speed为负值
    36                         speed = -10;
    37                     }
    38                     if (pto.offsetLeft == one) {
    39                         //当pto的值达到0或者-200时候就达到需求了,需要停止定时器,
    40                         clearInterval(timer);
    41                     } else {
    42                         //没有到0或者-200时候,就需要通过speed来自增或自减
    43                         pto.style.left = pto.offsetLeft + speed + 'px';
    44                     }
    45 
    46                 }, 30);
    47             }
    48         }
    49 </script>
  • 相关阅读:
    java.lang.NoClassDefFoundError: org/apache/poi/ss/formula/udf/UDFFinder
    IntelliJ使用指南—— 深入了解IntelliJ的Web部署逻辑
    javascript深入理解js闭包
    git commit -F时用到的commit.log模板
    github上需要生成密钥对:ssh key
    windows和linux字体库位置
    .vimrc配置文件
    iw交叉编译
    libnl和libopenssl,hostapd交叉编译
    linux中断
  • 原文地址:https://www.cnblogs.com/WhiteM/p/6023696.html
Copyright © 2020-2023  润新知