js觸發 CSS3-transition過渡動畫

參考文章 http://blog.csdn.net/pspgbhu/article/details/51448655

如果不用js,我們大多數把 transition 屬性用在hover上

平時我們直接使用transition屬性過渡效果,一般是這樣的。

鼠標移入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>

此外,我還發現了一個比較有趣的事情

1. 我們一般把 transition 屬性寫在選擇器上面,如果寫在hover上會是一樣的嗎?

.test:hover{
        background: red;
        width: 200px;
        height: 200px;
        transition: all 1s;   /*寫在這里了*/
     }

結果是真的不一樣,寫在hover上面就只有在移入的時候有動畫效果,移出的時候就沒有動畫效果了

如果想用js控制 transition 怎么辦了?
其實dom 操作其 css就行了。

例如 div 的css設置如下

.test{
        background: red;
        width: 100px;
        height: 100px;
        transition: all 1s; 
    }

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

一個需要注意的地方
當元素本身為display:none時,若此時我們想通過js先將其變為display:block 并且隨后再(請注意此關鍵詞)觸發其他想要的transition過渡效果,需要在 js改變其為display:block 后延遲100ms左右的時間再去設置其他過渡動畫,否則該過渡動畫不會觸發。

這個是因為 transition不支持display屬性。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 選擇qi:是表達式 標簽選擇器 類選擇器 屬性選擇器 繼承屬性: color,font,text-align,li...
    love2013閱讀 2,339評論 0 11
  • 選擇qi:是表達式 標簽選擇器 類選擇器 屬性選擇器 繼承屬性: color,font,text-align,li...
    wzhiq896閱讀 1,806評論 0 2
  • 問答題47 /72 常見瀏覽器兼容性問題與解決方案? 參考答案 (1)瀏覽器兼容問題一:不同瀏覽器的標簽默認的外補...
    _Yfling閱讀 13,814評論 1 92
  • 抬頭看著空中的流星雨 低頭卻是一臺臺相機 方便的公共廁所 也成了城市的盈利 諾大的草原 有著無數游客 休閑的海邊 ...
    澤秦閱讀 211評論 3 8
  • 昵稱:Cherry 聽課感受 1、制定戰略的原則 (1)要關注長時間的視野 (2)要遵循系統的規律 (3)元素之間...
    Cherry_wxh閱讀 286評論 0 0