<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當前位置: 首頁 - 科技 - 知識百科 - 正文

        原生JS封裝animate運動框架的實例

        來源:懂視網 責編:小采 時間:2020-11-27 22:28:09
        文檔

        原生JS封裝animate運動框架的實例

        原生JS封裝animate運動框架的實例:如下所示: <!DOCTYPE html> <html> <head lang=en> <meta charset=UTF-8> <title></title> <style> div { width: 100px; height: 100px; backgr
        推薦度:
        導讀原生JS封裝animate運動框架的實例:如下所示: <!DOCTYPE html> <html> <head lang=en> <meta charset=UTF-8> <title></title> <style> div { width: 100px; height: 100px; backgr

        如下所示:

        <!DOCTYPE html>
        <html>
        <head lang="en">
        <meta charset="UTF-8">
        <title></title>
        <style>
        div {
        width: 100px;
        height: 100px;
        background-color: pink;
        position: absolute;
        left: 0;
        top: 50px;
        border-radius: 50%;
        }
        </style>
        </head>
        <body>
        <button id="btn200">200</button>
        <button id="btn400">400</button>
        <div id="box"></div>
        </body>
        </html>
        <script>
        var btn200 = document.getElementById("btn200");
        var btn400 = document.getElementById("btn400");
        var box = document.getElementById("box");
        btn200.onclick = function() {
        animate(box,{width: 200, top: 100,left: 200,opacity:40,zIndex:3},function(){alert("我來了")});
        }
        btn400.onclick = function() {
        animate(box,{top:500,opacity:10});
        }
        // 多個屬性運動框架 添加回調函數
        function animate(obj,json,fn) { // 給誰 json
        clearInterval(obj.timer);
        obj.timer = setInterval(function() {
        var flag = true; // 用來判斷是否停止定時器 一定寫到遍歷的外面
        for(var attr in json){ // attr 屬性 json[attr] 值
        //開始遍歷 json
        // 計算步長 用 target 位置 減去當前的位置 除以 10
        // console.log(attr);
        var current = 0;
        if(attr == "opacity")
        {
        current = Math.round(parseInt(getStyle(obj,attr)*100)) || 0;
        console.log(current);
        }
        else
        {
        current = parseInt(getStyle(obj,attr)); // 數值
        }
        // console.log(current);
        // 目標位置就是 屬性值
        var step = ( json[attr] - current) / 10; // 步長 用目標位置 - 現在的位置 / 10
        step = step > 0 ? Math.ceil(step) : Math.floor(step);
        //判斷透明度
        if(attr == "opacity") // 判斷用戶有沒有輸入 opacity
        {
        if("opacity" in obj.style) // 判斷 我們瀏覽器是否支持opacity
        {
        // obj.style.opacity
        obj.style.opacity = (current + step) /100;
        }
        else
        { // obj.style.filter = alpha(opacity = 30)
        obj.style.filter = "alpha(opacity = "+(current + step)* 10+")";
        
        }
        }
        else if(attr == "zIndex")
        {
        obj.style.zIndex = json[attr];
        }
        else
        {
        obj.style[attr] = current + step + "px" ;
        }
        
        if(current != json[attr]) // 只要其中一個不滿足條件 就不應該停止定時器 這句一定遍歷里面
        {
        flag = false;
        }
        }
        if(flag) // 用于判斷定時器的條件
        {
        clearInterval(obj.timer);
        //alert("ok了");
        if(fn) // 很簡單 當定時器停止了。 動畫就結束了 如果有回調,就應該執行回調
        {
        fn(); // 函數名 + () 調用函數 執行函數
        }
        }
        },30)
        }
        function getStyle(obj,attr) { // 誰的 那個屬性
        if(obj.currentStyle) // ie 等
        {
        return obj.currentStyle[attr]; // 返回傳遞過來的某個屬性
        }
        else
        {
        return window.getComputedStyle(obj,null)[attr]; // w3c 瀏覽器
        }
        }
        </script>

        以上這篇原生JS封裝animate運動框架的實例就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

        聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        原生JS封裝animate運動框架的實例

        原生JS封裝animate運動框架的實例:如下所示: <!DOCTYPE html> <html> <head lang=en> <meta charset=UTF-8> <title></title> <style> div { width: 100px; height: 100px; backgr
        推薦度:
        標簽: js 案例 示例
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 日本黄色免费观看| 免费人成在线观看69式小视频| 国产高清在线免费视频| 亚洲中文字幕无码av| 欧美大尺寸SUV免费| 亚洲最大av资源站无码av网址| 最近最新MV在线观看免费高清| 亚洲人成在线中文字幕| 免费高清在线爱做视频| 精品一区二区三区无码免费直播| 日韩亚洲国产二区| 波多野结衣中文字幕免费视频| 久久久久亚洲AV无码专区首JN| 18女人腿打开无遮掩免费| 亚洲国产精品成人精品小说| 久久久久久久久免费看无码| 色欲aⅴ亚洲情无码AV| 中文国产成人精品久久亚洲精品AⅤ无码精品| 羞羞视频免费网站日本| 亚洲av永久无码精品网站| 日本免费xxxx色视频| 亚洲人成色4444在线观看| 亚洲国产人成精品| 免费人成黄页在线观看日本| 久久精品国产亚洲αv忘忧草| 免费日本黄色网址| 热久久这里是精品6免费观看| 亚洲美女精品视频| 国产区卡一卡二卡三乱码免费| 国产精品免费久久久久久久久| 久久亚洲美女精品国产精品| 免费激情视频网站| 波多野结衣免费一区视频 | 国产亚洲精品精品精品| 在线观看亚洲精品国产| 成人黄色免费网址| 成人免费夜片在线观看| 91亚洲自偷在线观看国产馆| 亚洲国产综合无码一区二区二三区| 99视频有精品视频免费观看| 亚洲爆乳成av人在线视菜奈实|