用js觸發CSS3-transition過渡動畫


用js觸發CSS3-transition過渡動畫

經過這幾天的工作,讓我進一步的了解到CSS3的強大,原本許多需要js才能實現的動畫效果,現在通過CSS3就能輕易實現了,但是CSS3也有自身的不足,例如說在動畫出發觸發上就沒有js靈活,因此我就開始考慮將CSS3與Js結合使用。

不過要注意CSS3屬性兼容性問題


平時我們直接使用transition動畫一般是這樣的

鼠標放置在div方塊上觸發動畫效果(鼠標懸浮div上即可觸發)

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
    </head>
    <style type="text/css"> .test{ background: red; width: 100px; height: 100px; transition: all 1s; -moz-transition: all 1s; -webkit-transition: all 1s; -o-transition:all 1s; } .test:hover{ background: red; width: 200px; height: 200px; } </style>
    <body>
        <div id="div" class="test"></div>
    </body>
</html>

現在如果想用js控制transition過渡動畫怎么辦呢?
最開始我是想和CSS控制動畫一樣,直接改變其className,但是發現沒有動畫效果。
后來經過了一番探索發現,通過dom操作其css屬性就行了。


例如div 的css設置如下

div{ width:200px; height:200px; transition: all 1s; }

然后在js中通過dom操作來改變div的css的具體屬性,如
obj.style.width="400px"
這時就會觸發css的過渡動畫。


下例為成功使用Js出發CSS3動畫(鼠標點擊觸發)

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
    </head>
    <style type="text/css"> .test{ background: red; width: 100px; height: 100px; transition: all 1s; -moz-transition: all 1s; -webkit-transition: all 1s; -o-transition:all 1s; } </style>
    <body>
        <div id="div" class="test"></div>
        <script type="text/javascript"> document.getElementById("div").onclick=function(){ document.getElementById("div").style.width="200px" document.getElementById("div").style.height="200px" } </script>
    </body>
</html>

一個需要注意的地方:
今天在工作中無意發現,當元素本身為display:none 時,若此時我們想通過js先將其變為display:block 並且隨后再觸發其他想要的transition過渡效果,需要在 js改變其為display:block 后用setTimeout延遲100ms左右的時間再去設置其他過渡動畫,否則該過渡動畫不會觸發。


有時間我會將其整理成另外一個博文。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM