js学习案例:基本的缓动动画函数

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<style>
    * {
        margin: 0;
        padding: 0;
    }

    #box {
        width: 200px;
        height: 200px;
        background-color: pink;
        position: absolute;
    }
</style>

<body>
    <button id="left">往左走</button>
    <button id="right">往右走</button>
    <div id="box"></div>

    <script>
        window.addEventListener("load", function () {
            var leftMove = document.getElementById("left");
            var rightMove = document.getElementById("right");
            var box = document.getElementById("box");

            // 往右走
            rightMove.addEventListener("click", function () {
                buffer(box, 800);
            });

            // 往左走
            leftMove.addEventListener("click", function () {
                buffer(box, 0);
            });
        });

        // 缓动动画函数
        function buffer(eleObj, target) {
            clearInterval(eleObj.timeId);
            var step = 0;
            eleObj.timeId = setInterval(function () {
                // 步长
                step = (target - eleObj.offsetLeft) * 0.1;
                step = target > eleObj.offsetLeft ? Math.ceil(step) : Math.floor(step);
                eleObj.style.left = eleObj.offsetLeft + step + "px";
                eleObj.innerText = eleObj.offsetLeft;
                // 停止
                if (eleObj.offsetLeft == target) {
                    clearInterval(eleObj.timeId);
                }

            }, 20);
        }
    </script>
</body>

</html>
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容