最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

JavaScript動畫原理之如何使用js進行動畫效果的實現(xiàn)

 更新時間:2023年04月06日 10:32:31   作者:Aic山魚  
在現(xiàn)在做頁面很多時候都會用上動畫效果,比如下拉菜單,側邊搜索欄,層的彈出與關閉等等,下面這篇文章主要給大家介紹了關于JavaScript動畫原理之如何使用js進行動畫效果實現(xiàn)的相關資料,需要的朋友可以參考下

前言

動畫對于我們來說都不陌生,css里面就有很多動畫,2d,3d等各種動畫,本篇主要是如何使用js實現(xiàn)動畫效果,如果本篇文章對你有幫助,點贊支持一下吧!

1.動畫原理

        1.獲得盒子當前位置

        2.讓盒子在當前位置加上1個移動距離

        3.利用定時器不斷重復這個操作

        4.加一個結束定時器的條件        

        5.注意該元素需要添加定位,才能使用element.style.left

<body>
    <div>
 
    </div>
    <script>
 
        var div = document.querySelector('div');
        var timer = setInterval(function () {
            if (div.offsetLeft >= 500) {
                clearInterval(timer);
            }
            div.style.left = div.offsetLeft + 2 + 'px';
        }, 30)
    </script>
</body>

主要核心就是利用定時器進行動畫的實現(xiàn)

2.動畫函數(shù)的封裝

<script>
        // 簡單動畫函數(shù)封裝
        function animate(obj, rug) {
            var timer = setInterval(function () {
                if (obj.offsetLeft >= rug) {
                    clearInterval(timer);
                }
                obj.style.left = obj.offsetLeft + 2 + 'px';
            }, 30)
        }
        var div = document.querySelector('div');
    animate(div,300);
    </script>

把這個動畫封裝成一個函數(shù),方便以后的使用,該封裝函數(shù)里的obj是哪個元素要進行動畫的實現(xiàn)rug是該元素要移動多少距離

3.給不同元素添加定時器

<body>
    <div>
 
    </div>
    <button>點擊走</button>
    <script>
        // 簡單動畫函數(shù)封裝
        // 給不同元素添加定時器
        function animate(obj, rug) {
            clearInterval(obj.timer);
            obj.timer = setInterval(function () {
                if (obj.offsetLeft >= rug) {
                    clearInterval(obj.timer);
                } else {
                    obj.style.left = obj.offsetLeft + 2 + 'px';
                }
            }, 30)
        }
        var div = document.querySelector('div');
        var but = document.querySelector('button');
        but.addEventListener('click', function () {
            animate(div, 200);
        })
    </script>

這樣就能實現(xiàn)多個元素進行動畫的使用了,并且每個元素都有屬于自己的定時器

4.緩動動畫原理

公式:目標值-現(xiàn)在的位置/10 ,作為每次的移動距離

<!DOCTYPE html>
<html lang="en">
 
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <style>
        div {
            position: absolute;
            left: 0;
            width: 100px;
            height: 100px;
            background-color: pink;
        }
    </style>
</head>
<body>
    <button>點擊</button>
    <div></div>
    <script>
        function animate(obj, rug) {
            clearInterval(obj.timer);
            obj.timer = setInterval(function () {
                // 步長值
                var step = (rug - obj.offsetLeft) / 10;
                if (obj.offsetLeft == rug) {
                    clearInterval(obj.timer);
                } else {
                    obj.style.left = obj.offsetLeft + step + 'px';
                }
            }, 15)
        }
        var div = document.querySelector('div');
        var but = document.querySelector('button');
        but.addEventListener('click', function () {
            animate(div, 500);
        })
    </script>
</body>
 
</html>

5.給動畫添加回調函數(shù)

回調函數(shù)原理:函數(shù)可以作為一個參數(shù)。將這個函數(shù)作為參數(shù)傳到另一個函數(shù)里面 ,當那個函數(shù)執(zhí)行完之后,再執(zhí)行傳進去的這個函數(shù),這個過程就叫做回調。

當跑完800米后,會彈出一個框“hello”,這個就是在執(zhí)行完800米這個動畫后再次進行的函數(shù),這就是回調函數(shù)

6.動畫函數(shù)的使用

實現(xiàn)側邊欄滑動效果

當鼠標經(jīng)過slider就會讓con這 個盒子滑動到左側

當鼠標離開slider就會讓con這 個盒子滑動到右側

<!DOCTYPE html>
<html lang="en">
 
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <script src="./js/animate.js"></script>
    <style>
        .silder {
            margin-left: 1600px;
            text-align: center;
            position: relative;
            line-height: 100px;
            width: 100px;
            height: 100px;
            background-color: aqua;
        }
        span {}
 
        .con {
            position: absolute;
            top: 0;
            left: 0;
            z-index: -1;
            width: 200px;
            height: 100px;
            background-color: rgb(132, 0, 255);
        }
    </style>
</head>
<body>
    <div class="silder">
        <span>←</span>
        <div class="con">問題反饋</div>
    </div>
    <script>
        var silder = document.querySelector('.silder');
        var con = document.querySelector('.con');
        var span = document.querySelector('span');
        silder.addEventListener('mouseenter', function () {
            animate(con, -200, function () {
                span.innerHTML = '→';
            });
        })
        silder.addEventListener('mouseleave', function () {
            animate(con, 0, function () {
                span.innerHTML = '←';
            });
        })
    </script>
</body>
 
</html>

寫在最后

到此這篇關于JavaScript動畫原理之如何使用js進行動畫效果的實現(xiàn)的文章就介紹到這了,更多相關js實現(xiàn)動畫效果內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • 使用OpenLayers3 添加地圖鼠標右鍵菜單

    使用OpenLayers3 添加地圖鼠標右鍵菜單

    這篇文章主要介紹了使用OpenLayers3 添加地圖鼠標右鍵菜單的相關資料,需要的朋友可以參考下
    2015-12-12
  • 全面了解構造函數(shù)繼承關鍵apply call

    全面了解構造函數(shù)繼承關鍵apply call

    下面小編就為大家?guī)硪黄媪私鈽嬙旌瘮?shù)繼承關鍵apply call。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-07-07
  • 使用sql.js實現(xiàn)前端SQLite數(shù)據(jù)庫操作

    使用sql.js實現(xiàn)前端SQLite數(shù)據(jù)庫操作

    sql.js?是將?SQLite?數(shù)據(jù)庫編譯為?JavaScript?的庫,允許開發(fā)者在瀏覽器環(huán)境中直接操作?SQLite?數(shù)據(jù)庫,本文主要介紹了如何使用sql.js實現(xiàn)多張表的關聯(lián)操作,需要的可以了解下
    2024-12-12
  • JS保存、讀取、換行、轉Json報錯處理方法

    JS保存、讀取、換行、轉Json報錯處理方法

    JS保存、讀取 換行 轉Json報錯異常信息:Unexpected token ILLEGAL,具體解決方法如下,感性的朋友可以參考下哈
    2013-06-06
  • bootstrap datetimepicker2.3.11時間插件使用

    bootstrap datetimepicker2.3.11時間插件使用

    這篇文章主要為大家詳細介紹了bootstrap datetimepicker2.3.11時間插件使用方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-11-11
  • 淺談javascript中的數(shù)據(jù)類型轉換

    淺談javascript中的數(shù)據(jù)類型轉換

    本文主要對javascript中的數(shù)據(jù)類型轉換進行介紹,具有一定的參考價值,下面跟著小編一起來看下吧
    2016-12-12
  • 基于js 本地存儲(詳解)

    基于js 本地存儲(詳解)

    下面小編就為大家?guī)硪黄趈s 本地存儲(詳解)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-08-08
  • JS如何顯示防盜鏈的外站圖片技巧示例

    JS如何顯示防盜鏈的外站圖片技巧示例

    通常在開發(fā)測試環(huán)節(jié),一些資源圖片會出現(xiàn)防盜鏈的錯誤提示,本文就通過前端基礎技術,實現(xiàn)基本的圖片跨站顯示效果,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-09-09
  • JavaScript實現(xiàn)廣告彈窗效果

    JavaScript實現(xiàn)廣告彈窗效果

    這篇文章主要為大家詳細介紹了JavaScript實現(xiàn)廣告彈窗效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-08-08
  • js 彈出框只彈一次(二次修改之后的)

    js 彈出框只彈一次(二次修改之后的)

    彈出框只彈一次,看到網(wǎng)上也就寫的很多,可以直接使用的沒有幾個,下面與大家分享個修改之后的代碼,需要的朋友可以參考下
    2013-11-11

最新評論

南木林县| 永和县| 沙河市| 确山县| 广宗县| 辽宁省| 通辽市| 讷河市| 邹城市| 南丹县| 台南县| 福建省| 黄梅县| 安化县| 华容县| 龙州县| 婺源县| 东乌珠穆沁旗| 乐东| 太谷县| 布尔津县| 二连浩特市| 无为县| 隆回县| 柳林县| 民乐县| 新丰县| 大港区| 湖南省| 灵寿县| 新宁县| 板桥市| 益阳市| 紫云| 恩施市| 海伦市| 大关县| 浮梁县| 台中县| 铜鼓县| 乐山市|