<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關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guān)鍵字專題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關(guān)鍵字專題關(guān)鍵字專題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
        當(dāng)前位置: 首頁 - 科技 - 知識百科 - 正文

        JavaScript變速動畫函數(shù)封裝添加任意多個屬性

        來源:懂視網(wǎng) 責(zé)編:小采 時間:2020-11-27 21:59:24
        文檔

        JavaScript變速動畫函數(shù)封裝添加任意多個屬性

        JavaScript變速動畫函數(shù)封裝添加任意多個屬性:下面通過實例代碼給大家介紹JavaScript變速動畫函數(shù)封裝添加任意多個屬性 ,具體代碼如下所示: <!DOCTYPE html> <html lang=en> <head> <meta charset=UTF-8> <title></tit
        推薦度:
        導(dǎo)讀JavaScript變速動畫函數(shù)封裝添加任意多個屬性:下面通過實例代碼給大家介紹JavaScript變速動畫函數(shù)封裝添加任意多個屬性 ,具體代碼如下所示: <!DOCTYPE html> <html lang=en> <head> <meta charset=UTF-8> <title></tit

        下面通過實例代碼給大家介紹JavaScript變速動畫函數(shù)封裝添加任意多個屬性 ,具體代碼如下所示:

        <!DOCTYPE html>
        <html lang="en">
        <head>
         <meta charset="UTF-8">
         <title></title>
         <style>
         * {
         margin: 0;
         padding: 0;
         }
         div {
         width: 200px;
         height: 100px;
         background-color: pink;
         position: absolute;
         }
         </style>
        </head>
        <body>
        <input type="button" id="bt" value="顯示效果"/>
        <div id="dv"></div>
        <script src="common.js"></script>
        <script>
         //點擊按鈕,使元素的寬度到達(dá)一個值,高度到達(dá)一個值
         //獲取任意元素的任意屬性值
         function getStyle(element, attr) {
         //判斷瀏覽器是否支持這個方法
         return window.getComputedStyle ? window.getComputedStyle(element, null)[attr] : element.currentStyle[attr] || 0;
         }
         //使任意元素,改變多個值的大小
         function animate(element, json) {
         //清理定時器
         clearInterval(element.timeId);
         //創(chuàng)建定時器
         element.timeId = setInterval(function () {
         //默認(rèn)全部到達(dá)目標(biāo)
         var flag = true;
         //循環(huán)遍歷要改變的屬性和值
         for (var attr in json) {
         //過去該屬性的當(dāng)前的值
         var current = parseInt(getStyle(element, attr));
         //當(dāng)前屬性對應(yīng)的目標(biāo)值
         var target = json[attr];
         //移動的步數(shù)
         var step = (target - current) / 10;
         step = step > 0 ? Math.ceil(step) : Math.floor(step);
         current += step;//移動后的值
         element.style[attr] = current + "px";
         if (current != target) {
         flag = false;
         }
         }
         if (flag) {
         //清理定時器
         clearInterval(element.timeId);
         }
         //測試代碼
         console.log("目標(biāo):" + target + ",當(dāng)前:" + current + ",每次的移動步數(shù):" + step);
         }, 20)
         }
         my$("bt").onclick = function () {
         animate(my$("dv"), {"width": 300, "left": 100, "top": 50});
         };
        </script>
        </body>
        </html>

        common.js:

        /**
         * Created by Administrator on 2018/8/18.
         */
        /**
         * Created by Administrator on 2016/7/27.
         */
        /**
         * Created by Administrator on 2016/7/21.
         *
         * 次文件來自 很牛x的程序員 .
         *
         * 作者:無名
         */
        /*
         * 該函數(shù)是返回的是指定格式的日期,是字符串類型
         * 參數(shù):date ----日期
         * 返回值: 字符串類型的日期
         * */
        function getDatetoString(date) {
         var strDate;//存儲日期的字符串
         //獲取年
         var year = date.getFullYear();
         //獲取月
         var month = date.getMonth() + 1;
         //獲取日
         var day = date.getDate();
         //獲取小時
         var hour = date.getHours();
         //獲取分鐘
         var minute = date.getMinutes();
         //獲取秒
         var second = date.getSeconds();
         hour = hour < 10 ? "0" + hour : hour;
         minute = minute < 10 ? "0" + minute : minute;
         second = second < 10 ? "0" + second : second;
         //拼接
         strDate = year + "-" + month + "-" + day + " " + hour + ":" + minute + ":" + second;//隱藏問題,關(guān)于變量聲明的位置
         return strDate;
        }
        //根據(jù)id獲取元素對象
        function my$(id) {
         return document.getElementById(id);
        }
        /*
         *
         * innerText屬性IE中支持
         * textContent火狐中支持
         * dvObj.innerText="您好";設(shè)置innerText的值
         * console.log(dvObj.innerText);獲取innerText的值
         * 因為上述原因,inerText有時候需要設(shè)置值,有時候需要獲取值
         * 所以,需要寫一個兼容的代碼能在火狐中使用,也可以在IE中使用
         *
         *
         * */
        /*
         *設(shè)置innerText屬性的值
         * element-----為某個元素設(shè)置屬性值
         * content-----設(shè)置的值
         * */
        function setInnerText(element, content) {
         if (typeof element.textContent === "undefined") {
         //IE瀏覽器
         element.innerText = content;
         } else {
         element.textContent = content;
         }
        }
        /*
         * 獲取innerText屬性的值
         * element 要獲取的元素
         * 返回的是該元素的innerText值
         * */
        function getInnerText(element) {
         if (typeof element.textContent === "undefined") {
         //IE瀏覽器
         return element.innerText;
         } else {
         return element.textContent;
         }
        }
        //獲取當(dāng)前元素前一個元素
        function getPreviousElement(element) {
         if (element.previousElementSibling) {
         return element.previousElementSibling;
         } else {
         var ele = element.previousSibling;
         while (ele && ele.nodeType !== 1) {
         ele = ele.previousSibling;
         }
         return ele;
         }
        }
        //獲取當(dāng)前元素的后一個元素
        function getNextElement(element) {
         if (element.nextElementSibling) {
         return element.nextElementSibling;
         } else {
         var ele = element.nextSibling;
         while (ele && ele.nodeType !== 1) {
         ele = ele.nextSibling;
         }
         return ele;
         }
        }
        //獲取父元素中的第一個元素
        function getFirstElementByParent(parent) {
         if (parent.firstElementChild) {
         return parent.firstElementChild;
         } else {
         var ele = parent.firstChild;
         while (ele && ele.nodeType !== 1) {
         ele = ele.nextSibling;
         }
         return ele;
         }
        }
        //獲取父元素中的最后一個元素
        function getLastElementByParent(parent) {
         if (parent.lastElementChild) {
         return parent.lastElementChild;
         } else {
         var ele = parent.lastChild;
         while (ele && ele.nodeType !== 1) {
         ele = ele.previousSibling;
         }
         return ele;
         }
        }
        //獲取兄弟元素
        function getsiblings(ele) {
         if (!ele)return;//判斷當(dāng)前的ele這個元素是否存在
         var elements = [];//定義數(shù)組的目的就是存儲當(dāng)前這個元素的所有的兄弟元素
         var el = ele.previousSibling;//當(dāng)前元素的前一個節(jié)點
         while (el) {
         if (el.nodeType === 1) {//元素
         elements.push(el);//加到數(shù)組中
         }
         el = el.previousSibling;
         }
         el = ele.nextSibling;
         while (el) {
         if (el.nodeType === 1) {
         elements.push(el);
         }
         el = el.nextSibling;
         }
         return elements;
        }
        // //能力檢測多個瀏覽器為同一個對象注冊多個事件
        var EventTools = {
         //為對象添加注冊事件
         addEventListener: function (element, eventName, listener) {
         if (element.addEventListener) {
         element.addEventListener(eventName, listener, false);
         } else if (element.attachEvent) {
         element.attachEvent("on" + eventName, listener)
         } else {
         element["on" + eventName] = listener;
         }
         },
         //為對象移除事件
         removeEventListener: function (element, eventName, listener) {
         if (element.removeEventListener) {
         element.removeEventListener(eventName, listener, false);
         } else if (element.detachEvent) {
         element.detachEvent("on" + eventName, listener);
         } else {
         element["on" + eventName] = null;
         }
         },
         //獲取參數(shù)e
         getEvent: function (e) {
         return e || window.event;
         },
         getPageX: function (e) {
         if (e.pageX) {
         return e.pageX;
         } else {
         //有的瀏覽器把高度設(shè)計在了文檔的第一個元素中了
         //有的瀏覽器把高度設(shè)計在了body中了
         //document.documentElement.scrollTop;//文檔的第一個元素
         //document.body.scrollTop;
         var scrollLeft = document.documentElement.scrollLeft || document.body.scrollLeft;
         return e.clientX + scrollLeft;
         }
         },
         getPageY: function (e) {
         if (e.pageY) {
         return e.pageY;
         } else {
         var scrollTop = document.documentElement.scrollTop || document.body.scrollTop;
         return e.clientY + scrollTop;
         }
         }
        };

        補(bǔ)充:js 變速動畫函數(shù)

        //獲取任意一個元素的任意一個屬性的當(dāng)前的值---當(dāng)前屬性的位置值
         function getStyle(element, attr) {
         return window.getComputedStyle ? window.getComputedStyle(element, null)[attr] : element.currentStyle[attr] || 0;
         }
        //變速動畫函數(shù)封裝增加任意多個屬性和回調(diào)函數(shù)及層級還有透明度
         //element元素 json對象 存儲屬性與值 fn為回調(diào)函數(shù)
         function animate(element, json, fn) {
         //清理定時器
         clearInterval(element.timeid);
         //設(shè)置定時器
         element.timeid = setInterval(function () {
         //假設(shè)全部到達(dá)目標(biāo)
         var f = true;
         //循環(huán)去獲取傳入的數(shù)據(jù)
         for (var i in json) {
         //判斷傳入的值 是不是opacity
         if (i == 'opacity') {
         //獲取當(dāng)前opacity的值 并且放大100倍
         var current = getStyle(element, i) * 100;
         //把目標(biāo)值也放大100倍
         var target = json[i] * 100;
         //移動的步數(shù)
         var step = (target - current) / 10;
         //判斷是不是為0
         step = step > 0 ? Math.ceil(step) : Math.floor(step);
         //移動后的位置
         current += step;
         //移動元素屬性
         element.style[i] = current / 100;
         //判斷屬性是不是zIndex
         } else if (i == 'zIndex') {
         //直接設(shè)置zIndex
         element.style[i] = json[i];
         } else {
         //普通屬性獲取(轉(zhuǎn)化成數(shù)字)
         var current = parseInt(getStyle(element, i));
         //目標(biāo)屬性值
         var target = json[i]
         //移動的步驟(漸變)
         var step = (target - current) / 10;
         //判斷移動的值取整
         step = step > 0 ? Math.ceil(step) : Math.floor(step);
         //移動后的位置
         current += step;
         //移動元素
         element.style[i] = current + 'px';
         }
         //只要有一個沒達(dá)到目標(biāo)就設(shè)置F為false
         if (current != target) {
         f = false;
         }
         //目標(biāo)到達(dá) 清理定時器 判斷有沒有回調(diào)函數(shù)
         if (f) {
         clearInterval(element.timeid);
         if (fn) {
         fn();
         }
         }
         }
         console.log("目標(biāo):" + target + ",當(dāng)前:" + current + ",每次的移動步數(shù):" + step);
         }, 20)
         }

        總結(jié)

        以上所述是小編給大家介紹的JavaScript變速動畫函數(shù)封裝添加任意多個屬性,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!

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

        文檔

        JavaScript變速動畫函數(shù)封裝添加任意多個屬性

        JavaScript變速動畫函數(shù)封裝添加任意多個屬性:下面通過實例代碼給大家介紹JavaScript變速動畫函數(shù)封裝添加任意多個屬性 ,具體代碼如下所示: <!DOCTYPE html> <html lang=en> <head> <meta charset=UTF-8> <title></tit
        推薦度:
        標(biāo)簽: 增加 js 封裝
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 亚洲伊人tv综合网色| 免费人成无码大片在线观看| 国产亚洲精品激情都市| 高潮毛片无遮挡高清免费| 四虎永久免费影院| 成年网站免费入口在线观看| 亚洲第一永久AV网站久久精品男人的天堂AV | 日韩免费视频一区| 国产青草亚洲香蕉精品久久| 免费鲁丝片一级在线观看| 亚洲AV无码一区二区一二区 | 日本免费网站观看| 色网站在线免费观看| 国产精品亚洲玖玖玖在线观看 | 日韩一区二区三区免费体验| 久久水蜜桃亚洲AV无码精品| 国产区卡一卡二卡三乱码免费| 午夜肉伦伦影院久久精品免费看国产一区二区三区 | 桃子视频在线观看高清免费完整 | 亚洲国产日韩在线| 波多野结衣久久高清免费| 免费一级毛suv好看的国产网站| 国产成人高清亚洲| 亚洲国产精品免费视频| 色噜噜亚洲男人的天堂| 免费人成在线观看播放国产 | 亚洲中文无码线在线观看| 日韩中文字幕免费| a毛看片免费观看视频| 亚洲成a人片毛片在线| 婷婷综合缴情亚洲狠狠尤物| 99精品视频在线观看免费| 亚洲免费网站在线观看| 亚洲第一视频在线观看免费| 国产成人AV片无码免费| 亚洲狠狠婷婷综合久久蜜芽| 亚洲综合无码AV一区二区 | 51视频精品全部免费最新| 亚洲国产日韩a在线播放| 亚洲综合精品香蕉久久网| 国产成人精品免费视频网页大全|