鱼C论坛

 找回密码
 立即注册
查看: 1986|回复: 0

[学习笔记] JS.006:WEB API总结(03动画函数)

[复制链接]
发表于 2020-7-21 00:50:12 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 小脑斧 于 2020-7-22 10:20 编辑

定时器使用之
协议按钮禁用

  1. <body>
  2. <textarea name="texta" id="" cols="30" rows="10">
  3.   这个世界,,,,,,,,,,,,,,,,
  4. </textarea>
  5. <input type="button" value="请仔细阅读协议(5)" id="btn" disabled="disabled" />
  6. <script src="jquery-3.2.1/jquery-3.2.1.js"></script>
  7. <script>
  8. function myId(id) {
  9.         return document.getElementById(id);
  10.     }
  11.   var time=5;
  12. var timeId= setInterval(function () {
  13.     time--;
  14.    myId("btn").value="请仔细阅读协议("+time+")";
  15.     if(time<=0){
  16.       //停止定时器就可以
  17.       clearInterval(timeId);
  18.       //按钮可以被点击了
  19.       myId("btn").disabled=false;
  20.       myId("btn").value="同意";
  21.     }
  22.   },1000);
  23. </script>
  24. </body>
复制代码

案例div变化

  1. <body>
  2. <div id="dv"></div>
  3. <input type="button" value="渐变" id="btn"/>
  4. <script src="jquery-3.2.1/jquery-3.2.1.js"></script>
  5. <script>
  6. //颜色透明度变化
  7. myId("btn").onclick=function () {

  8. var opacity=10;
  9. //按钮的点击事件
  10. var timeId=setInterval(function () {
  11. //透明化了
  12. opacity--;
  13. if(opacity<=0){
  14. clearInterval(timeId);//清理定时器
  15. }
  16. //设置div的透明度
  17. myId("dv").style.opacity=opacity/10;
  18. },200);
  19. };
  20. </script>
  21. </body>
复制代码


div宽度变化

  1. <body>
  2. <input type="button" value="变宽" id="btn"/>
  3. <div id="dv"></div>
  4. <script src="记得修改.js"></script>
  5. <script>
  6.   myId("btn").onclick = function () {
  7.     var width = 200;
  8.     var timeId = setInterval(function () {
  9.       width+=10;
  10.       if(width==800){
  11.         clearInterval(timeId);
  12.       }
  13.       myId("dv").style.width=width+"px";
  14.     }, 20);
  15.   };
  16. </script>
  17. </body>
复制代码



案例div移动封装函数(重点)

  1. <body>
  2. <input type="button" id="btn1" value="移到400px">
  3. <input type="button" id="btn2" value="移到800px">
  4. <div id="dv" ></div>
  5. <script src="jquery-3.2.1/jquery-3.2.1.js"></script>
  6. <script>
  7. //div要移动,要脱离文档流---position:absolute
  8.   //如果样式的代码是在style的标签中设置,外面是获取不到
  9.   //如果样式的代码是在style的属性设置,外面是可以获取
  10.   //获取div的当前位置
  11.   //console.log(myId("dv").offsetLeft);
  12.     //800->400当前与目标比大小
  13.     function myId(id) {
  14.         return document.getElementById(id);
  15.     }</p><p>
  16. //封装函数
  17.     // function animate(element,target) {
  18.     //     var timeid = setInterval(function () {
  19.     //         var current= element.offsetLeft;//number
  20.     //         var step =10;
  21.     //
  22.     //         if (current<target){
  23.     //             if ((target-current)>step){
  24.     //                 current += step;
  25.     //                 element.style.left = current+"px";
  26.     //             }else {
  27.     //                 element.style.left = target +"px";
  28.     //             }
  29.     //
  30.     //         }else if (current>target){
  31.     //             if ((current-target)>step){
  32.     //                 current -= step;
  33.     //                 element.style.left = current+"px";
  34.     //             }else {
  35.     //                 element.style.left = target +"px";
  36.     //             }
  37.     //         }else {
  38.     //             clearInterval(timeid);
  39.     //         }
  40.     //     },20);
  41.     // }

  42.     // 封装函数精简版
  43.     function animate(element,target){
  44.         //优化代码减少无用定时器
  45.         clearInterval(element.timeid);
  46.           element.timeid = setInterval(function () {
  47.         //var timeid = setInterval(function () {
  48.             var current = element.offsetLeft;
  49.             var step = 10;
  50.             step = current>target?-step:step;
  51.             current += step;

  52.             if (Math.abs(current-target)>Math.abs(step)){//绝对值
  53.                 element.style.left = current+"px";
  54.             }else {
  55.                 clearInterval(element.timeid);//可一起写
  56.                 element.style.left = target +"px";
  57.             }
  58.         },20);
  59.     }
  60.    
  61.     myId("btn1").onclick = function () {
  62.         animate(myId("dv"),400);
  63.     };
  64.     myId("btn2").onclick = function () {
  65.         animate(myId("dv"),800);
  66.     };
  67. </script>
  68. </body>
复制代码

Scan.jpg



WebstormProjects.zip

78.8 KB, 阅读权限: 10, 下载次数: 46

最后一个的源代码

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-28 08:41

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表