webkitAnimationEnd事件與webkitTransitionEnd事件

之前有個項目中需求是相應的動畫后面都播放一下聲音,就是想得到了應用webkitTransitionEnd后添加聲音。在pc上播放都是正常的但是在手機上測試的時候確實響了兩次聲音,后嘗試了好多方法進行修改但是終不得解決,最后由于項目緊張就用了最笨的方法頁面添加n個聲音依次播放。終不甘心所欲抽時間又查了下原因:

在CSS 3中,可以通過使用keyframe樣式屬性與animation樣式屬性實現animation動畫,使用transition樣式屬性實現transition動畫。
在WebKit引擎的瀏覽器(包括Chrome瀏覽器與Safari瀏覽器)中,存在與這兩種動畫功能相關的webkitAnimationEnd事件與webkitTransitionEnd事件,本文對這兩個事件進行詳細介紹。本文中不對CSS 3中的animation動畫功能以及transition動畫功能進行詳細介紹,如果想更多了解這方面的知識,可以參閱筆者所著《HTML 5與CSS 3權威指南》。
在WebKit引擎的瀏覽器中,當CSS 3的animation動畫執行結束時,觸發webkitAnimationEnd事件,當CSS 3的transition動畫執行結束時,觸發webkitTransitionEnd事件??梢酝ㄟ^如下所示的代碼捕捉這兩個事件。

//捕捉webkitAnimationEnd事件
element.addEventListener('webkitAnimationEnd', end, false);
//捕捉webkitTransitionEnd事件
element.addEventListener('webkitTransitionEnd', end, false); 

webkitAnimationEnd事件##

在WebKit引擎的瀏覽器中,當CSS 3的animation動畫執行結束時,觸發webkitAnimationEnd事件。在CSS 3中,使用如下所示的樣式代碼定義animation動畫。

.element{ 
    -webkit-animation: anime 0.5s ease-in;
}
@-webkit-keyframes anime {
    0% {
        -webkit-transform: translate(0,0);
        opacity: 0.1;
    }
    50% {
        -webkit-transform: translate(100px,0);
        opacity: 0.5;
    }
    100% {
        -webkit-transform: translate(0,0);
        opacity: 1;
    }
}

上面這段代碼執行功能為在0.5秒內將元素向右移動100像素后將其返回。我們可以在這個動畫結束時觸發的webkitAnimationEnd事件中執行一些代碼,例如顯示動畫已執行結束,以及動畫的執行次數結果如:

動畫執行次數:1

webkitAnimationEnd事件觸發次數:1

webkitTransitionEnd事件##

在WebKit引擎的瀏覽器中,當CSS 3的transition動畫執行結束時,觸發webkitTransitionEnd事件。在CSS 3中,使用如下所示的樣式代碼定義transition動畫。

.element{ -webkit-transition: all 0.25s ease-in; }
.element.on{ -webkit-transform: translate(100px,0); }

上面這段代碼執行功能同樣為在0.5秒內將元素向右移動100像素后將其返回。我們可以在這個動畫結束時觸發的webkitTransitionEnd事件中執行一些代碼,例如顯示動畫已執行結束,以及動畫的執行次數結果如:

動畫執行次數:1

webkitTransitionEnd事件觸發次數:2

從執行結果中我們可以看出,在每個動畫的執行過程中,webkitTransitionEnd事件的觸發次數比webkitAnimationEnd事件的觸發次數多一次,這是因為webkitAnimationEnd事件只在元素向右移動,然后向左返回之后觸發一次,而webkitTransitionEnd事件將在元素向右移動之后觸發一次,在元素向左返回之后再觸發一次。
接下來,我們為元素多指定一個opacity(透明度)樣式屬性,代碼如下所示:

.element.on{
    -webkit-transform: translate(100px,0);
    opacity: 0.5;
}

然后將元素的transition樣式屬性值指定為all,然后觀察執行一次動畫時webkitTransitionEnd事件的觸發次數結果如:

動畫執行次數:1

transition動畫執行結束:4

從執行結果中我們可以看出,如果多使用一個樣式屬性,在每個動畫執行的過程中webkitTransitionEnd事件的觸發次數將多增加兩次。也就是說webkitTransitionEnd事件將在元素的每個樣式屬性值發生改變之后觸發一次。

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

推薦閱讀更多精彩內容

  • 選擇qi:是表達式 標簽選擇器 類選擇器 屬性選擇器 繼承屬性: color,font,text-align,li...
    love2013閱讀 2,335評論 0 11
  • 選擇qi:是表達式 標簽選擇器 類選擇器 屬性選擇器 繼承屬性: color,font,text-align,li...
    wzhiq896閱讀 1,803評論 0 2
  • 很多人喜歡討論是否存在公平?答案是這個世界是不公平的,像廣州一個村民地被征收以后每個人換了價值千萬的房子,有些人出...
    st命閱讀 405評論 0 1
  • 在三件事中,大家有無沒發現,當我們去做一件事或執行一個任務的時候,老是會拖了,三件事任務早上想好的,好象蠻簡單,但...
    無憂俠閱讀 427評論 0 0
  • ┏ (^ω^)=?我想知道都有誰欣賞我拍的圖片
    我是雙子座DJ閱讀 220評論 0 0