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

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

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問(wèn)答1問(wèn)答10問(wèn)答100問(wèn)答1000問(wèn)答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
        問(wèn)答文章1 問(wèn)答文章501 問(wèn)答文章1001 問(wèn)答文章1501 問(wèn)答文章2001 問(wèn)答文章2501 問(wèn)答文章3001 問(wèn)答文章3501 問(wèn)答文章4001 問(wèn)答文章4501 問(wèn)答文章5001 問(wèn)答文章5501 問(wèn)答文章6001 問(wèn)答文章6501 問(wèn)答文章7001 問(wèn)答文章7501 問(wèn)答文章8001 問(wèn)答文章8501 問(wèn)答文章9001 問(wèn)答文章9501
        當(dāng)前位置: 首頁(yè) - 科技 - 知識(shí)百科 - 正文

        基于勻速運(yùn)動(dòng)的實(shí)例講解(側(cè)邊欄,淡入淡出)

        來(lái)源:懂視網(wǎng) 責(zé)編:小采 時(shí)間:2020-11-27 22:27:57
        文檔

        基于勻速運(yùn)動(dòng)的實(shí)例講解(側(cè)邊欄,淡入淡出)

        基于勻速運(yùn)動(dòng)的實(shí)例講解(側(cè)邊欄,淡入淡出):javascript中,如何讓一個(gè)元素(比如div)運(yùn)動(dòng)起來(lái)呢? 設(shè)置基本的樣式,一定要讓div有定位( 當(dāng)然用margin的變化也可以讓元素產(chǎn)生運(yùn)動(dòng)效果 ); <style> div { width: 100px; height: 100px; background: red; positio
        推薦度:
        導(dǎo)讀基于勻速運(yùn)動(dòng)的實(shí)例講解(側(cè)邊欄,淡入淡出):javascript中,如何讓一個(gè)元素(比如div)運(yùn)動(dòng)起來(lái)呢? 設(shè)置基本的樣式,一定要讓div有定位( 當(dāng)然用margin的變化也可以讓元素產(chǎn)生運(yùn)動(dòng)效果 ); <style> div { width: 100px; height: 100px; background: red; positio

        javascript中,如何讓一個(gè)元素(比如div)運(yùn)動(dòng)起來(lái)呢?

        設(shè)置基本的樣式,一定要讓div有定位( 當(dāng)然用margin的變化也可以讓元素產(chǎn)生運(yùn)動(dòng)效果 );

        <style>
         div {
         width: 100px;
         height: 100px;
         background: red;
         position: absolute;
         left: 0px;
         }
        </style>

        基本的結(jié)構(gòu):

         <input type="button" value="動(dòng)起來(lái)"/>
         <div id="box"></div>

        當(dāng)我們點(diǎn)擊,這個(gè)按鈕的時(shí)候,要讓div運(yùn)動(dòng)起來(lái),其實(shí)就是讓div的left值持續(xù)變化,那么div就會(huì)產(chǎn)生運(yùn)動(dòng)效果,我們先讓left改變,再讓他持續(xù)改變

        window.onload = function(){
         var oBtn = document.querySelector( "input" ),
         oBox = document.querySelector( '#box' );
         oBtn.onclick = function(){
         oBox.style.left = oBox.offsetLeft + 10 + 'px';
         }
         }

        那么每當(dāng)我點(diǎn)擊按鈕的時(shí)候,div的left值就會(huì)在原來(lái)的基礎(chǔ)上加上10px。這里也可以用獲取非行間樣式的方法獲取left的值再加上10px,也可以達(dá)到效果

        function css(obj, attr) {
         if (obj.currentStyle) {
         return obj.currentStyle[attr];
         } else {
         return getComputedStyle(obj, false)[attr];
         }
        }
        window.onload = function () {
         var oBtn = document.querySelector("input"),
         oBox = document.querySelector('#box');
         oBtn.onclick = function () {
         oBox.style.left = parseInt( css( oBox, 'left' ) ) + 10 + 'px';
         }
        }

        offsetLeft與獲取非行間樣式left的值 有什么區(qū)別呢?

        offsetLeft沒(méi)有px單位,而left是有px單位的

        oBtn.onclick = function () {
         // alert( css( oBox, 'left' ) ); //0px
         alert( oBox.offsetLeft ); //0
         }

        現(xiàn)在div是點(diǎn)擊一下動(dòng)一下,我們讓他持續(xù)動(dòng)起來(lái),怎么做? 加上定時(shí)器

         oBtn.onclick = function () {
         setInterval( function(){
         oBox.style.left = oBox.offsetLeft + 10 + 'px';
         }, 1000 / 16 );
         }

        當(dāng)我們點(diǎn)擊按鈕時(shí)候,div就會(huì)不停的向左運(yùn)動(dòng),怎么讓他停下來(lái)呢?停下來(lái),肯定是需要條件的,比如,我們讓他跑到500px的時(shí)候停下來(lái)

        var timer = null;
         oBtn.onclick = function () {
         timer = setInterval( function(){
         if ( oBox.offsetLeft == 500 ) {
         clearInterval( timer );
         }else {
         oBox.style.left = oBox.offsetLeft + 10 + 'px';
         }
         }, 1000 / 16 );
         }

        這樣,我們就可以讓div停在500px的位置,這里如果我們把步長(zhǎng)10 改成 7或者8,你會(huì)發(fā)現(xiàn)停不下來(lái)了,為什么呢?因?yàn)闀?huì)跳過(guò)500px這個(gè)判斷條件

        0, 7, 14, 21 .... 280, 287, 294, 301, ... 490, 497, 504. 從497變成504跳過(guò)了500px,所以div停不下來(lái),那怎么辦呢?修改下判斷條件就可以了.

        oBtn.onclick = function () {
         timer = setInterval( function(){
         if ( oBox.offsetLeft >= 500 ) {
         oBox.style.left = 500 + 'px';
         clearInterval( timer );
         }else {
         oBox.style.left = oBox.offsetLeft + 7 + 'px';
         }
         }, 1000 / 16 );
        }

        把條件變成>=500 清除定時(shí)器, 同時(shí)還要加上這句代碼oBox.style.left = 500 + 'px',讓他強(qiáng)制被停在500px, 否則div就不會(huì)停在500px, 而是504px了,還有一個(gè)問(wèn)題,如果在div運(yùn)動(dòng)的過(guò)程中,你不停的點(diǎn)擊按鈕,會(huì)發(fā)現(xiàn), div開(kāi)始加速運(yùn)動(dòng)了,而不是每次加10px了,這又是為什么呢?這是因?yàn)椋看吸c(diǎn)擊一下按鈕,就開(kāi)了一個(gè)定時(shí)器,每次點(diǎn)擊一個(gè)按鈕就開(kāi)了一個(gè)定時(shí)器,這樣就會(huì)有多個(gè)定時(shí)器疊加,那么速度也會(huì)產(chǎn)生疊加,所以div開(kāi)始加速了,那么我們要讓他保持10px的速度,意思就是不要讓定時(shí)器疊加,更通俗點(diǎn)說(shuō)就是確保一個(gè)定時(shí)器在開(kāi)著。應(yīng)該怎么做呢?

        oBtn.onclick = function () {
         clearInterval( timer );
         timer = setInterval( function(){
         if ( oBox.offsetLeft >= 500 ) {
         oBox.style.left = 500 + 'px';
         clearInterval( timer );
         }else {
         oBox.style.left = oBox.offsetLeft + 7 + 'px';
         }
         }, 1000 / 16 );
        }

        只需要在每次點(diǎn)擊按鈕的時(shí)候,清除之前的定時(shí)器就可以了,這樣就能確保始終一個(gè)定時(shí)器開(kāi)著,至此,一個(gè)最基本的勻速運(yùn)動(dòng)結(jié)構(gòu)就完成了,那么我們可以把他封裝成函數(shù)

         function animate(obj, target, speed) {
         clearInterval(timer);
         timer = setInterval(function () {
         if (obj.offsetLeft == target) {
         clearInterval(timer);
         } else {
         obj.style.left = obj.offsetLeft + speed + 'px';
         }
         }, 30);
         }

        有了這個(gè)函數(shù)之后,我們來(lái)小小的應(yīng)用一下。

        http://www.jiathis.com/getcode

        打開(kāi)這個(gè)網(wǎng)站,你注意看他右邊有個(gè)側(cè)欄式效果(分享到),這種特效在網(wǎng)站上很普遍

        <!DOCTYPE html>
        <html>
        <head lang="en">
         <meta charset="UTF-8">
         <title>側(cè)邊欄 - by ghostwu</title>
         <style>
         #box {
         width: 150px;
         height: 300px;
         background: red;
         position: absolute;
         left: -150px;
         top: 50px;
         }
        
         #box div {
         width: 28px;
         height: 100px;
         position: absolute;
         right: -28px;
         top: 100px;
         background: green;
         }
         </style>
         <script>
         window.onload = function () {
         var timer = null;
         var oBox = document.getElementById("box");
         oBox.onmouseover = function () {
         animate(this, 0, 10);
         }
         oBox.onmouseout = function () {
         animate(this, -150, -10);
         }
         function animate(obj, target, speed) {
         clearInterval(timer);
         timer = setInterval(function () {
         if (obj.offsetLeft == target) {
         clearInterval(timer);
         } else {
         obj.style.left = obj.offsetLeft + speed + 'px';
         }
         }, 30);
         }
         }
         </script>
        </head>
        <body>
        <div id="box">
         <div>分享到</div>
        </div>
        </body>
        </html>

        再來(lái)一個(gè)淡入淡出的效果:

        當(dāng)鼠標(biāo)移上去之后,透明度變成1

        <!doctype html>
        <html lang="en">
        <head>
         <meta charset="UTF-8">
         <title>淡入淡出 - by ghostwu</title>
         <style>
         img {
         border: none;
         opacity: 0.3;
         filter: alpha(opacity:30);
         }
         </style>
         <script>
         window.onload = function () {
         var timer = null;
         var oImg = document.getElementById("img");
         oImg.onmouseover = function(){
         animate( this, 100, 10 );
         }
         oImg.onmouseout = function(){
         animate( this, 30, -10 );
         }
         //alpha=30 --> 100
         function animate(obj, target, speed) {
         clearInterval(timer);
         var cur = 0;
         timer = setInterval(function () {
         cur = css( obj, 'opacity') * 100;
         if( cur == target ){
         clearInterval( timer );
         }else {
         cur += speed;
         obj.style.opacity = cur / 100;
         obj.style.filter = "alpha(opacity:" + cur + ")";
         }
         }, 30);
         }
        
         function css(obj, attr) {
         if (obj.currentStyle) {
         return obj.currentStyle[attr];
         } else {
         return getComputedStyle(obj, false)[attr];
         }
         }
         }
         </script>
        </head>
        <body>
        <img src="./img/h4.jpg" alt="" id="img"/>
        </body>
        </html>

        以上這篇基于勻速運(yùn)動(dòng)的實(shí)例講解(側(cè)邊欄,淡入淡出)就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

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

        文檔

        基于勻速運(yùn)動(dòng)的實(shí)例講解(側(cè)邊欄,淡入淡出)

        基于勻速運(yùn)動(dòng)的實(shí)例講解(側(cè)邊欄,淡入淡出):javascript中,如何讓一個(gè)元素(比如div)運(yùn)動(dòng)起來(lái)呢? 設(shè)置基本的樣式,一定要讓div有定位( 當(dāng)然用margin的變化也可以讓元素產(chǎn)生運(yùn)動(dòng)效果 ); <style> div { width: 100px; height: 100px; background: red; positio
        推薦度:
        • 熱門焦點(diǎn)

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 亚洲M码 欧洲S码SSS222| 亚洲AV无码国产在丝袜线观看| 内射干少妇亚洲69XXX| 国产在线播放线91免费| 亚洲日韩中文在线精品第一 | 亚洲精品动漫在线| 日本一卡精品视频免费| 亚洲性天天干天天摸| 免费国产黄网站在线观看视频| 亚洲综合精品一二三区在线| 免费A级毛片av无码| 亚洲日本视频在线观看| 免费A级毛片无码免费视| 亚洲国产成人精品激情| 啦啦啦www免费视频| 免费看美女午夜大片| 久久久久国产成人精品亚洲午夜 | 国产一级高清视频免费看| 91亚洲精品麻豆| 在线观看免费高清视频| 亚洲av永久无码精品网址| 免费少妇a级毛片人成网| 一级免费黄色大片| 亚洲AV人人澡人人爽人人夜夜| 222www免费视频| 国产亚洲精品成人AA片| 免费h成人黄漫画嘿咻破解版| 免费无码专区毛片高潮喷水| 国产精品亚洲高清一区二区| 黄页免费在线观看 | 波多野结衣免费一区视频 | 亚洲狠狠ady亚洲精品大秀| 成年午夜视频免费观看视频| 特级毛片免费播放| 久久久久久亚洲精品| 欧美三级在线电影免费| 亚洲综合无码一区二区| 黄色一级毛片免费| 久久被窝电影亚洲爽爽爽| 久久福利资源网站免费看| 国产亚洲成在线播放va|