前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >动画函数封装

动画函数封装

作者头像
星辰_大海
发布于 2020-09-30 03:24:52
发布于 2020-09-30 03:24:52
1.2K00
代码可运行
举报
文章被收录于专栏:h5学习笔记h5学习笔记
运行总次数:0
代码可运行

1. 动画实现原理

核心原理:通过定时器 setInterval() 不断移动盒子位置。

实现步骤:

  1. 获得盒子当前位置
  2. 让盒子在当前位置加上1个移动距离
  3. 利用定时器不断重复这个操作
  4. 加一个结束定时器的条件
  5. 注意此元素需要添加定位,才能使用element.style.left
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<body>
    <div></div>
    <script>
    //动画原理
    // 1.获得盒子当前位置
    // 2.让盒子在当前位置加上1个移动距离
    // 3.利用定时器不断重复这个操作
    // 4.加一个结束定时器的条件
    // 5.注意此元素需要添加定位, 才能使用element.style.left
    var div = document.querySelector('div' );
    var timer = setInterval(function() {
        if (div.offsetLeft >= 400) {
            //停止动画本质是停止定时器
            clearInterval(timer);
        };
        div.style.left = div.offsetLeft + 1 + 'px' ;
    }, 30);
    </script>
</body>

2.简单动画函数封装原理

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<script>
    //简单动画函数封装obj目标对象target 目标位置
    function animate(obj, target) {
        var timer = setInterval (function() {
            if (obj.offsetLeft >= target) {
                //停止动画本质是停止定时器
                clearInterval(timer);
            }
        obj.style.left = obj.offsetLeft + 1 + 'px';
        }, 30);
    }
    var div = document . querySelector('div' );
    var span = document . querySelector( ' span );
    //调用函数
    animate(div, 300) ;
    animate(span, 200);
</script>

3. 动画函数给不同元素记录不同定时器

如果多个元素都使用这个动画函数,每次都要var 声明定时器。我们可以给不同的元素使用不同的定时器(自己专门用自己的定时器)。

核心原理:利用 JS 是一门动态语言,可以很方便的给当前对象添加属性。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<script>
    // var obj = {};
    // obj.name = ' andy' ; 
    //简单动画函 数封装obj目标对象target目标位置
    //给不同的元素指定了不同的定时器  function animate(obj, target) {
            // 当我们不断的点击按钮,这个元素的速度会越来越快,因为开启了太多的定时器
            // 解决方案就是 让我们元素只有一个定时器执行
            // 先清除以前的定时器,只保留当前的一个定时器执行
            clearInterval(obj.timer);
            obj.timer = setInterval(function() {
                if (obj.offsetLeft >= target) {
                    // 停止动画 本质是停止定时器
                    clearInterval(obj.timer);
                }
                obj.style.left = obj.offsetLeft + 1 + 'px';}, 30);
        }
    var div = document . querySelector('div' );
    var span = document . querySelector( 'span' );
    var btn = document . querySelector( 'button' );
    //调用函数
    animate(div, 300) ;
    btn.addEventListener( 'click', function() {
        animate(span, 200); 
    })
</script>
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-09-29 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
JavaScript——动画函数封装
回调函数原理:函数可以作为一个参数,将这个函数作为参数传到另一个函数里面,当那个函数执行完之后,再执行传进去的这个函数,这个过程就叫做回调。
岳泽以
2022/10/26
1K0
JavaScript——动画函数封装
【如果你要学JS <19>】——动画效果
动画对于我们来说都不陌生,css里面就有很多动画,2d,3d等各种动画,本篇主要是如何使用js实现动画效果,如果本篇文章对你有帮助,点赞支持一下吧!
像素人
2024/01/03
1880
【如果你要学JS <19>】——动画效果
JavaScript—动画
回调函数原理:函数可以作为一个参数。将这个函数作为参数传到另一个函数里面,当那个函数执行完之后,再执行传进去的这个函数,这个过程叫做回调。
Cikian.
2022/09/22
5450
动画函数封装
如果多个元素都使用这个动画函数,每次都要var 声明定时器。我们可以给不同的元素使用不同的定时器(自己专门用自己的定时器)。
梨涡浅笑
2022/05/08
6800
动画函数封装
如果多个元素都使用这个动画函数,每次都要var 声明定时器。我们可以给不同的元素使用不同的定时器(自己专门用自己的定时器)。f
清出于兰
2020/10/26
6530
第59天:缓动动画封装函数
比如说  console.log(Math.ceil(1.01))       结果 是 2  
半指温柔乐
2018/09/11
6880
「JavaScript 」动画基础 - 02
请注意,本文编写于 2085 天前,最后修改于 173 天前,其中某些信息可能已经过时。
曼亚灿
2023/05/17
3790
返回顶部案例
带有动画的返回顶部 此时可以继续使用我们封装的动画函数 只需要把所有的left 相关的值改为 跟 页面垂直滚动距离相关就可以了 页面滚动了多少,可以通过 window.pageYOffset 得到 最后是页面滚动,使用 window.scroll(x,y)  //1. 获取元素        var sliderbar = document.querySelector('.slider-bar');        var banner = document.queryS
星辰_大海
2020/10/09
1.4K0
第58天:简单焦点轮播图
一、轮播图无缝滚动 1、获取元素,动态生成节点 2、匀速运动动画 3、调用动画函数 4、添加定时器,自动播放 1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 2 <html xmlns="http://www.w3.org/1999/xhtml"> 3 <head> 4 <meta http-e
半指温柔乐
2018/09/11
1.2K0
第57天:匀速运动封装函数
一、动画的原理 动画的基本原理 : 让盒子的 offsetLeft   +  步长 Math.abs(-5) 取绝对值函数 二、匀速运动封装函数 1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>匀速动画封装</title> 6 <style> 7 div{ 8 width: 100px; 9
半指温柔乐
2018/09/11
3580
23个项目管理经典案例_交互动画
注意: speed = (end - box.offsetLeft)/20; 代表用(终点位置-当前位置)/动画系数 动画系数可以控制动画的快慢
全栈程序员站长
2022/11/03
1.8K0
「JavaScript 」动画基础 - 01
请注意,本文编写于 2086 天前,最后修改于 174 天前,其中某些信息可能已经过时。
曼亚灿
2023/05/17
5130
「JavaScript 」动画基础 - 01
前端成神之路-WebAPIs06
回调函数原理:函数可以作为一个参数。将这个函数作为参数传到另一个函数里面,当那个函数执行完之后,再执行传进去的这个函数,这个过程就叫做回调。
海仔
2021/01/05
1.3K0
前端成神之路-WebAPIs06
JavaScript案例:轮播图
节流阀目的:当上一个函数动画内容执行完毕,再去执行下一个函数动画,让事件无法连续触发。
岳泽以
2022/10/26
3K0
JavaScript案例:轮播图
前端成神之路-WebAPIs05
offset 翻译过来就是偏移量, 我们使用 offset系列相关属性可以动态的得到该元素的位置(偏移)、大小等。
海仔
2021/01/05
1.5K0
前端成神之路-WebAPIs05
JS动画效果
相信大家在很多门户网站上都可以看到动画的交互效果,通过这些动画生动地体现了我们在网页上的交互效果,现在我们就来学习一下这些动画效果的分解动作吧。作为学习了网页设计初步的一个进阶选修课。
1025645
2018/08/23
20.9K0
仿淘宝返回顶部案例
.案例:返回顶部 带有动画的返回顶部 此时可以继续使用我们封装的动画函数 只需要把所有的left 相关的值改为 跟 页面垂直滚动距离相关就可以了 页面滚动了多少,可以通过 window.pageYOffset 得到 最后是页面滚动,使用 window.scroll(x,y) <script> // 1. 获取元素 var sliderbar = document.querySelector(".slider-bar"); var banne
梨涡浅笑
2020/10/27
1.1K0
20171020
1.运动函数封装 1.一级 备注:接受两个参数,一个是被操作对象,另一个是目标位置, 缺陷:只能实现单一方向的运动 var one = document.getElementById("one"); 调用:animate(one,500); eg: function animate(obj,target){ clearInterval(timer); timer = setInterval(function(){ var
天天_哥
2018/09/29
4580
js运动框架逐渐递进版
运动,其实就是在一段时间内改变left、right、width、height、opactiy的值,到达目的地之后停止。
wfaceboss
2019/04/08
1.9K0
第61天:json遍历和封装运动框架(多个属性)
 var json = {width:200,height:300,left:50} console.log(json.width); for(var k in json) { console.log(k);   // k 遍历的是json  可以得到的是  属性 console.log(json[k]);  // json[k]  得到 是属性的  值 }
半指温柔乐
2018/09/11
6360
第61天:json遍历和封装运动框架(多个属性)
相关推荐
JavaScript——动画函数封装
更多 >
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文