<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
        主站蜘蛛池模板: 亚洲日韩在线中文字幕综合| 亚洲精品韩国美女在线| 国产亚洲视频在线| 性感美女视频在线观看免费精品| 亚洲国产成人久久| 无码国产精品一区二区免费 | 国产特黄一级一片免费| 免费少妇a级毛片人成网| 亚洲第一se情网站| 久久精品国产精品亚洲人人| 国产高潮久久免费观看| 久久被窝电影亚洲爽爽爽| 人人玩人人添人人澡免费| 精品日韩亚洲AV无码一区二区三区 | 亚洲AV无码一区二区三区在线| AV大片在线无码永久免费| 亚洲午夜国产精品| 在线a毛片免费视频观看| 色噜噜噜噜亚洲第一| 亚洲人成影院在线观看| a国产成人免费视频| 久久久久亚洲av无码专区| 在线看片无码永久免费视频| 亚洲AV无码成人精品区狼人影院| 国产成人免费a在线视频app| 精品熟女少妇aⅴ免费久久| 内射少妇36P亚洲区| 浮力影院第一页小视频国产在线观看免费 | 99视频在线精品免费观看6| 国产精品亚洲专区无码牛牛| 在线观看亚洲成人| 亚洲高清视频免费| 色偷偷尼玛图亚洲综合| 国产精品亚洲片在线观看不卡| 7723日本高清完整版免费| 337p日本欧洲亚洲大胆人人 | 野花香在线视频免费观看大全| 亚洲国产精品张柏芝在线观看| 国产一级淫片视频免费看| 久久狠狠躁免费观看2020| 亚洲国产精品无码第一区二区三区|