JS完美運(yùn)動(dòng)框架(學(xué)習(xí)篇)

完美運(yùn)動(dòng)框架實(shí)現(xiàn)JS運(yùn)動(dòng)
<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
        <style>
            #div1 {
                width: 200px;
                height: 200px;
                background: red;
                opacity: 0.3;
                alpha(opacity: 30);
            }
        </style>
        <script type="text/javascript" src="move.js"></script>
        <script>
            window.onload = function() {
                var oDiv = document.getElementById('div1');
                oDiv.onmouseover = function() {
                    starMove(oDiv, {
                        width: 500,
                        height: 500,
                        opacity: 100
                    }, function() {
                        alert('abc');
                    });
                };
            };
        </script>
    </head>

    <body>
        <div id="div1"></div>
    </body>
</html>
move.js運(yùn)動(dòng)框架
//獲取屬性
function getStyle(obj, name) {
    if(obj.currentStyle) {
        return obj.currentStyle[name];
    } else {
        return getComputedStyle(obj, true)[name];
    }
}
//obj表示運(yùn)動(dòng)的物體,json運(yùn)動(dòng)的屬性,fnEnd鏈?zhǔn)竭\(yùn)動(dòng)的函數(shù)
function starMove(obj, json, fnEnd) {
    //移除定時(shí)器
    clearInterval(obj.timer);
    obj.timer = setInterval(function() {
        //假定所有運(yùn)動(dòng)的屬性都結(jié)束
        var bStop = true;
        //遍歷需要同時(shí)運(yùn)動(dòng)的屬性
        for(var attr in json) {
            //獲得運(yùn)動(dòng)屬性的當(dāng)前運(yùn)動(dòng)值
            var cur = 0;
            if(attr == 'opacity') {
                cur = Math.round(parseFloat(getStyle(obj, attr)) * 100);
            } else {
                cur = parseInt(getStyle(obj, attr));
            }
            //計(jì)算速度
            var speed = (json[attr] - cur) / 6;
            //速度需要取整
            speed = speed > 0 ? Math.ceil(speed) : Math.floor(speed);
            //判斷如果有屬性沒有結(jié)束,則為false
            if(cur != json[attr]) bStop = false;
            //開始運(yùn)動(dòng)增減
            if(attr == 'opacity') {
                obj.style.filter = 'alpha(opacity:' + cur + speed + ');'
                obj.style.opacity = (cur + speed) / 100;
            } else {
                obj.style[attr] = cur + speed + 'px';
            }
        }
        //最后運(yùn)動(dòng)結(jié)束
        if(bStop == true) {
            //關(guān)閉定時(shí)器
            clearInterval(obj.timer);
            //執(zhí)行鏈?zhǔn)胶瘮?shù)
            if(fnEnd) fnEnd();
        }
    }, 30)
}
運(yùn)動(dòng)框架實(shí)現(xiàn)的兩個(gè)小例子
JS幻燈片實(shí)現(xiàn)
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
        <title>JS幻燈片練習(xí)</title>
        <link href="css/css.css" rel="stylesheet" type="text/css" />
        <script src="js/move.js" type="text/javascript"></script>
        <script type="text/javascript">
            window.onload = function() {
                var oDiv = document.getElementById('div1    ');
                var aBtn = document.getElementsByTagName('ol')[0].getElementsByTagName('li');
                var oUL = document.getElementsByTagName('ul')[0];

                var now = 0;
                for(var i = 0; i < aBtn.length; i++) {
                    aBtn[i].index = i;
                    aBtn[i].onclick = function() {
                        now = this.index;
                        tab();
                    }
                }
                //點(diǎn)擊之后的操作
                function tab() {
                    for(var i = 0; i < aBtn.length; i++) {
                        aBtn[i].className = '';
                    }
                    aBtn[now].className = 'actived';
                    move(oUL, {
                        top: -360 * now
                    });

                }
                //每次循環(huán)之后的操作
                function next() {
                    now++;
                    if(now == aBtn.length) {
                        now = 0;
                    }
                    tab();
                }
                var timer = setInterval(next, 5000);
                oDiv.onmouseover = function() {
                    clearInterval(timer);
                };
                oDiv.onmouseout = function() {
                    timer = setInterval(next, 5000)
                }
            }
        </script>
    </head>
    <body style="background:#aaa;">
        <div id="div1">
            <ol>
                <li class="actived">1</li>
                <li>2</li>
                <li>3</li>
                <li>4</li>
                <li>5</li>
            </ol>
            <ul>
                <li>![](img/1.jpg)</li>
                <li>![](img/2.jpg)</li>
                <li>![](img/3.jpg)</li>
                <li>![](img/4.jpg)</li>
                <li>![](img/5.jpg)</li>
            </ul>
        </div>
        <div style="text-align:center;margin:50px 0; font:normal 14px/24px 'MicroSoft YaHei';">
            <p>êêó??ˉàà?÷£oIE8?¢360?¢FireFox?¢Chrome?¢Safari?¢Opera?¢°áó??¢??1·?¢êà????′°. </p>
            <p>à′?′£o
                <a  target="_blank">??3¤??2?</a>
            </p>
        </div>
    </body>
</html>
css代碼
* {
    margin: 0;
    padding: 0;
}

li {
    list-style: none;
}

#div1 {
    width: 750px;
    height: 360px;
    overflow: hidden;
    margin: 50px auto;
    position: relative;
}

#div1 ol {
    position: absolute;
    right: 5px;
    bottom: 5px;
    height: 25px;
    z-index: 999;
}

#div1 ol li {
    float: left;
    width: 20px;
    height: 20px;
    text-align: center;
    border: 1px solid #f47400;
    margin: 2px;
    cursor: pointer;
    color: #f47400;
    background: #fbf2d1;
    margin-top: 2px;
}

#div1 ol li.actived {
    background: #ffb542;
    font-weight: bold;
    color: #FFF;
    width: 22px;
    height: 22px;
    margin-top: 0;
}

#div1 ul {
    position: absolute;
    left: 0;
    top: 0;
}

#div1 ul li {
    width: 750px;
    height: 360px;
    float: left;
}

#div1 ul li img {
    width: 750px;
    height: 360px;
    float: left;
}
發(fā)布信息簡(jiǎn)單實(shí)現(xiàn)
<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8" />
        <title></title>
        <style>
            *{margin: 0; padding: 0;}
            #ul1{
                width: 400px;
                height: 400px;
                border: 1px solid black;
                margin: 10px auto;
                overflow: hidden;
            }
            #ul1 li{
                border-bottom: 1px #999 dashed;
                padding: 4px;
                list-style: none;
                overflow: hidden;
                filter: alpha(opacity:0);
                opacity: 0;
            }
        </style>
        <script type="text/javascript" src="js/move.js" ></script>
        <script>
            window.onload = function(){
                var oBtn = document.getElementById('btn1');
                var oUl = document.getElementById('ul1');
                var oTxt = document.getElementById('txt1');
                oBtn.onclick = function(){
                    var oLi = document.createElement('li');
                    oLi.innerHTML =oTxt.value;
                    if(oUl.children.length>0)
                    {
                        oUl.insertBefore(oLi,oUl.children[0]);
                    }else
                    {
                        oUl.appendChild(oLi);
                    }
                    var iHeight = oLi.offsetHeight;
                    oLi.style.height =0;
                    starMove(oLi,{height:iHeight},function(){
                        starMove(oLi,{opacity:100});
                    });
                } 
            }
        </script>
    </head>
    <body>
        <textarea id="txt1" rows="4" cols="40"></textarea>
        <input id="btn1" type="button" value="發(fā)布" />
        
        <ul id="ul1">
            <li>ajfiaejof</li>
        </ul>
        
    </body>
</html>

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子炮姨,更是在濱河造成了極大的恐慌唐含,老刑警劉巖豁鲤,帶你破解...
    沈念sama閱讀 217,826評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件蕉鸳,死亡現(xiàn)場(chǎng)離奇詭異端铛,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)努酸,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,968評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)杜恰,“玉大人获诈,你說(shuō)我怎么就攤上這事⌒暮郑” “怎么了舔涎?”我有些...
    開封第一講書人閱讀 164,234評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)逗爹。 經(jīng)常有香客問我亡嫌,道長(zhǎng),這世上最難降的妖魔是什么掘而? 我笑而不...
    開封第一講書人閱讀 58,562評(píng)論 1 293
  • 正文 為了忘掉前任挟冠,我火速辦了婚禮,結(jié)果婚禮上镣屹,老公的妹妹穿的比我還像新娘圃郊。我一直安慰自己,他們只是感情好女蜈,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,611評(píng)論 6 392
  • 文/花漫 我一把揭開白布持舆。 她就那樣靜靜地躺著,像睡著了一般伪窖。 火紅的嫁衣襯著肌膚如雪逸寓。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,482評(píng)論 1 302
  • 那天覆山,我揣著相機(jī)與錄音竹伸,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛勋篓,可吹牛的內(nèi)容都是我干的吧享。 我是一名探鬼主播,決...
    沈念sama閱讀 40,271評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼譬嚣,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼钢颂!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起拜银,我...
    開封第一講書人閱讀 39,166評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤殊鞭,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后尼桶,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體操灿,經(jīng)...
    沈念sama閱讀 45,608評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,814評(píng)論 3 336
  • 正文 我和宋清朗相戀三年泵督,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了趾盐。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,926評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡幌蚊,死狀恐怖谤碳,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情溢豆,我是刑警寧澤蜒简,帶...
    沈念sama閱讀 35,644評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站漩仙,受9級(jí)特大地震影響搓茬,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜队他,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,249評(píng)論 3 329
  • 文/蒙蒙 一卷仑、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧麸折,春花似錦锡凝、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,866評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至芭析,卻和暖如春锚扎,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背馁启。 一陣腳步聲響...
    開封第一講書人閱讀 32,991評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工驾孔, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,063評(píng)論 3 370
  • 正文 我出身青樓翠勉,卻偏偏與公主長(zhǎng)得像妖啥,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子眉菱,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,871評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容