1. 程式人生 > >JavaScript封裝動畫函數

JavaScript封裝動畫函數

tar 清理 content ntc .text def 產生 ted tex

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title></title>
    <style>
        * {
            margin: 0;
            padding: 0;
        }

        div {
            margin-top: 10px;
            width: 100px;
            height: 50px;
background-color: purple; position: absolute; } </style> </head> <body> <input type="button" value="移動到400px" id="bt1"/> <input type="button" value="移動到800px" id="bt2"/> <div id="dv"></div> <script src="common.js"></script
> <script> my$("bt1").onclick = function () { animate(my$("dv"), 400); }; my$("bt2").onclick = function () { animate(my$("dv"), 800); }; //動畫函數 function animate(element, target) { //一會要清理定時器(只產生一個定時器) var timeId = setInterval(function () {
//獲取div當前的位置 var current = element.offsetLeft;//數字類型沒有px //div每次移動多少像素-----步數 var step = 10; step = current < target ? step : -step; //每次移動後的距離 current += step; //判斷當前移動後的位置是否到達目標位置 if (Math.abs(target - current) > Math.abs(step)) { element.style.left = current + "px"; } else { //清理定時器 clearInterval(timeId); element.style.left = target + "px"; } }, 20) } </script> </body> </html>

common.js:

/**
 * Created by Administrator on 2018/7/22.
 */
function my$(id) {
    return document.getElementById(id);
}
//設置任意的標簽中間的文本內容
function setInnerText(element, text) {
    //判斷瀏覽器是否支持該屬性
    if (typeof element.textContent == "undefined") {
        element.innerText = text;
    } else {
        element.textContent = text;
    }
}
//獲取任意標簽中間的文本內容
function getInnerText(element) {
    if (typeof element.textContent == "undefined") {
        return element.innerText;
    } else {
        return element.textContent;
    }
}
//獲取任意一個父級元素的第一個子級元素
function getFirstElementChild(element) {
    if (element.firstElementChild) {//true 支持
        return element.firstElementChild;
    } else {
        var node = element.firstChild;//第一個子節點
        while (node && node.nodeType != 1) {
            node = node.nextSibling;
        }
        return node;
    }
}

//獲取任意一個父級元素的最後一個子級元素
function getLastElementChild(element) {
    if (element.lastElementChild) {
        return element.lastElementChild;
    } else {
        var node = element.lastChild;
        while (node && node.nodeType != 1) {
            node = node.previousSibling;
        }
        return node;
    }
}

//為任意元素綁定任意事件
//參數1:任意元素
//參數2:事件類型
//參數3:事件處理函數
function addEventListner (element, type, fn) {
    //判斷瀏覽器是否支持該方法
    if(element.addEventListener) {
        element.addEventListener(type,fn, false);
    }else if(element.attachEvent) {
        element.attachEvent("on" + type, fn);
    }else {
        element["on"+type] = fn;
    }
}

JavaScript封裝動畫函數