JS 运动缓冲效果封装函数的使用方法解析

why 36 2024-09-27

这次给大家带来JS运动缓冲效果的封装函数如何使用,使用JS运动缓冲效果的封装函数的注意事项有哪些,下面就是实战案例,一起来看一下。

JS 运动缓冲效果封装函数的使用方法解析

之前经常写运动函数,要写好多好多,后来想办法封装起来。(运动缓冲)。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

/*

  物体多属性同时运动的函数

  obj:运动的物体

  oTarget:对象,属性名为运动的样式名,属性值为样式运动的终点值

  ratio:速度的系数

*/

function bufferMove(obj, oTarget, fn,ratio = 8) {

  clearInterval(obj.iTimer);

  obj.iTimer = setInterval(function () {

    // 此处设定开关bBtn,假设所有的属性均已运动完毕true

    var bBtn = true;

    for(var sAttr in oTarget){

      // 获取当前值,此处兼容透明度的变化

      if(sAttr === 'opacity') {

        var iCur = parseFloat(getStyle(obj, sAttr) * 100);

      else {

        var iCur = parseInt(getStyle(obj, sAttr));

      }

      // 计算速度,此处可判定方向,如向左或向右,先透明后出现或先出现后透明等

      var iSpeed = (oTarget[sAttr] - iCur) / ratio;

      iSpeed = iSpeed > 0 ? Math.ceil(iSpeed) : Math.floor(iSpeed);

      // 计算下一次的值

      var iNext = iCur + iSpeed;

      // 赋值给对应样式

      if(sAttr ==='opacity') {

        obj.style.opacity = iNext / 100;

        obj.style.filter = 'alpha(opacity=' + iNext +')';

      else {

        obj.style[sAttr] = iNext + 'px';

      }

      // 清除定时器,当前的位置和终点值是否相等,相等则说明结束

      if(iNext !== oTarget[sAttr]) {

        bBtn = false;

      }

    }

    // 如果bBtn的值为true,则说明所有的属性均已运动完毕,回调函数fn()

    if(bBtn) {

      clearInterval(obj.iTimer);

      if(fn){

        fn();

      }

    }

  }, 50);

}

以上封装函数也可以用于单个属性,多样式运动,比如:

1

bufferMove(obj,{"left":200,"width":400,"opacity":80},fn,8);

就这样,相信看了本文案例你已经掌握了方法。


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:JS 如何实现文字间歇循环滚动效果详解
下一篇:微信小程序的wx.request与Promise的结合使用
相关文章

 发表评论

暂时没有评论,来抢沙发吧~