首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >原生JS实现弹性运动中需要注意的弊端

原生JS实现弹性运动中需要注意的弊端

作者头像
越陌度阡
发布2020-11-26 14:48:19
发布2020-11-26 14:48:19
8380
举报

在使用弹性运动时,需要注意一些小问题,即运动的元素所要改变的属性值不能太小,如果太小在反弹时就会出现负值,导致出现错误,所以要给出一定的限制,下面写一个小Demo,欢迎大家复制粘贴及吐槽。

代码语言:javascript
复制
<!DOCTYPE html>
<html>

<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>原生JS实现弹性运动中需要注意的弊端</title>
    <style>
        #div1 {
            width: 100px;
            height: 30px;
            background: red;
        }
    </style>

    <script>
        window.onload = function () {

            var oDiv = document.getElementById('div1');

            oDiv.onmouseover = function () {

                startMove(oDiv, 200);
            };

            oDiv.onmouseout = function () {

                startMove(oDiv, 40);
            };
        };

        var iSpeed = 0;
        var height = 40;

        function startMove(obj, iTarget) {

            clearInterval(obj.timer);

            obj.timer = setInterval(function () {

                iSpeed += (iTarget - height) / 5;
                iSpeed *= 0.7;

                if (Math.abs(iSpeed) < 1 && Math.abs(iTarget - height) < 1) {

                    clearInterval(obj.timer);

                    obj.style.height = iTarget + 'px';

                } else {
                    height += iSpeed;

                    //弹性运动过程中,反弹时可能导致高度为0,出现报错,所以要限制
                    if (height < 0) {

                        height = 0;
                    }
                    //当高度太小,即便限制,实际效果也会有些卡顿
                    obj.style.height = height + 'px';
                }
            }, 30);
        }
    </script>
</head>

<body>
    <div id="div1">
    </div>
</body>

</html>
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019/08/17 ,如有侵权请联系 cloudcommunity@tencent.com 删除

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档