91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

JavaScript運動函數怎么用

發布時間:2022-02-09 14:25:40 來源:億速云 閱讀:167 作者:iii 欄目:開發技術

這篇文章主要介紹“JavaScript運動函數怎么用”的相關知識,小編通過實際案例向大家展示操作過程,操作方法簡單快捷,實用性強,希望這篇“JavaScript運動函數怎么用”文章能幫助大家解決問題。

運動函數是我們自己封裝的一個函數。

作用是將css樣式的改變不是一次性完成 是 逐步完成 執行效果 看上去 像是 動畫/運動 完成的css樣式改變。

實際項目中框架等都有自己的運動函數我們目前封裝一個簡單的兼容多屬性的運動函數。

運動函數部分: 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        * {
            margin: 0;
            padding: 0;
        }
        div {
            width: 100px;
            height: 100px;
            background: rgb(231, 12, 48);
            margin: 0 auto;
            opacity: 0.3;
            /* transition: 3s; */
        }
        p {
            width: 100px;
            height: 100px;
            background: black;
            position: fixed;
            top: 200px;
            left: 50px;
        }
    </style>
</head>
<body>
    <button>點擊</button>
    <div></div>
    <script>
        var oDiv = document.querySelector('div');
        var oBtn = document.querySelector('button');
        var oP = document.querySelector('p')
           oBtn.addEventListener('click',function(){
            move(oDiv,{width:1800,height:900,opacity:1} , function(){ oDiv.style.background = 'black' } );
        })
        // 運動函數命名
        //     move    運動函數
        // @param  object  element 要執行運動函數的標簽對象
        // @param  object  object  要執行運動的css屬性 和 最終數值
        // @param  function    callback    運動結束執行的回調函數
        //                                 默認值是空函數
        function move(element, object, callback = function () { }) {
            // 定義變量存儲定時器個數
            let num = 0;
            // 循環遍歷參數二(object)
            // 使用 for...in 循環 使用 let 定義變量 
            for (let type in object){
                // type 是 參數2對象的屬性 也就是 要運動的css樣式的屬性
                // object[type] 是 參數2對象的屬性值 也就是 要運動的css樣式的 最終數值
                // 定時器數量加一
                num++;
                // 開始數值,也就是獲取的原始數值,兼容透明度寫法
                let startVal = (type === 'opacity') ? window.getComputedStyle(element)[type] * 100 : parseInt(window.getComputedStyle(element)[type]);
                // 結束數值,也就是輸入的屬性對應的屬性值,兼容透明度寫法
                let endVal = (type === 'opacity') ? object[type] * 100 : object[type];
                // 定時器開始,time記錄定時器編號
                let time = setInterval( function () {
                    // 設定步長值= 結束數值 - 開始數值  /  10 
                    let step = (endVal - startVal) / 10;
                    // 如果步長值大于0 就向上取整,反之則向下取整
                    step = step > 0 ? Math.ceil(step) : Math.floor(step);
                    // 將初始值 += 步長值 再把新值賦值給初始值
                    startVal += step;
                    // 將新的步長值 賦值給 標簽對象的css樣式 兼容 透明度
                    element.style[type] = (type === 'opacity') ? startVal / 100 : startVal + 'px';
                    // 如果初始值等于最終值
                    if (startVal === endVal) {
                        // 清除定時器
                        clearInterval(time);
                        // 變量 累減1 也就是 少了一個執行的定時器
                        // num--;
                        // 當執行的定時器為0 時,所有定時器都清除了
                        if (num === 0) {
                            callback();
                        }
                    }
                }, 20)
            }
        }
    </script>
</body>
</html>

運行結果:

JavaScript運動函數怎么用

關于“JavaScript運動函數怎么用”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識,可以關注億速云行業資訊頻道,小編每天都會為大家更新不同的知識點。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

阜南县| 麻栗坡县| 钦州市| 五原县| 加查县| 谢通门县| 余庆县| 金秀| 宁晋县| 登封市| 叶城县| 图们市| 芒康县| 二连浩特市| 会同县| 门头沟区| 壤塘县| 衡东县| 都安| 饶河县| 茶陵县| 澄江县| 伽师县| 博客| 竹北市| 瑞安市| 朝阳县| 洪江市| 绵竹市| 宜宾市| 玉山县| 延吉市| 故城县| 广安市| 台前县| 广水市| 汝南县| 敦煌市| 宣化县| 高雄县| 高陵县|