第 26 章 CSS3 動畫效果

来源:http://www.cnblogs.com/zfc2201/archive/2016/05/01/5450253.html
-Advertisement-
Play Games

學習要點: 1.動畫簡介 2.屬性詳解 3.簡寫和版本 主講教師:李炎恢 本章主要探討 HTML5 中 CSS3 的動畫效果,可以通過類似 Flash 那樣的關鍵幀模式控制運行。 一.動畫簡介 CSS3 提供了類似 Flash 關鍵幀控制的動畫效果,通過 animation 屬性實現。那麼之前的 t ...


學習要點:

1.動畫簡介

2.屬性詳解

3.簡寫和版本

 

主講教師:李炎恢

 

本章主要探討 HTML5 中 CSS3 的動畫效果,可以通過類似 Flash 那樣的關鍵幀模式控制運行。

 

一.動畫簡介

CSS3 提供了類似 Flash 關鍵幀控制的動畫效果,通過 animation 屬性實現。那麼之前的 transition 屬性只能通過指定屬性的初始狀態和結束狀態來實現動畫效果,有一定的局限性。

animation 實現動畫效果主要由兩個部分組成:1.通過類似 Flash 動畫中的關鍵幀聲明一個動畫;2.在 animation 屬性中調用關鍵幀聲明的動畫。

CSS3 提供的 animation 是一個複合屬性,它包含了很多子屬性。如下表所示:

屬性

說明

 animation-name

用來指定一個關鍵幀動畫的名稱,這個動畫名必須對應一個@keyframes 規則。CSS 載入時會應用 animation-name 指定的動畫,從而執行動畫。

animation-duration

用來設置動畫播放所需的時間

animation-timing-function

用來設置動畫的播放方式

animation-delay

用來指定動畫的延遲時間

animation-iteration-count

用來指定動畫播放的迴圈次數

animation-direction

用來指定動畫的播放方向

animation-play-state

用來控制動畫的播放狀態

animation-fill-mode

用來設置動畫的時間外屬性

animation

以上的簡寫形式

除了這 9 個屬性之外,動畫效果還有一個重要的屬性,就是關鍵幀屬性:@keyframes。它的作用是聲明一個動畫,然後在 animation 調用關鍵幀聲明的動畫。

//基本格式,“name”可自定義

@keyframes name {
/*...*/
}

 

二.屬性詳解

在講解動畫屬性之前,先創建一個基本的樣式。

//一個 div 元素

<div>我是 HTML5</div>

//設置 CSS

div {
    width: 200px;
    height: 200px;
    border: 1px solid green;
}

1.@keyframes

//創建動畫的第一步,先聲明一個動畫關鍵幀。

@keyframes myani { 
    0% {
        margin-left:0px;
    }
    50% {
        margin-left:100px;
    }
    100% {
        margin-left:0px;
    }
}

//或者重覆的,可以併列寫在一起

@keyframes myani { 
    0%, 100% {
        margin-left:0px;
    }
    50% {
        background-color: black; margin-left:100px;
    }
}

2.animation-name

//調用@keyframes 動畫 

animation-name: myani;

屬性值

說明

none

預設值,沒有指定任何動畫

INDEX

是由@keyframes 指定創建的動畫名稱

3.animation-duration

//設置動畫播放的時間

animation-duration: 1s;

當然,以上通過關鍵幀的方式,這裡插入了三個關鍵幀。0%設置了白色和左偏移為 0,和初始狀態一致,表明從這個地方開始動畫。50%設置了黑色,左偏移 100px。而 100%則是最後一個設置,又回到了白色和左偏移為 0。整個動畫就一目瞭然了。

而對於關鍵幀的用法,大部分用百分比比較容易控制,當然,還有其他一些控制方法。

//從什麼狀態過渡到什麼狀態

@keyframes myani {
    from {
        margin-left:0px;
    }
    to {
        margin-left:100px;
    }
}

4.animation-timing-function

//設置緩動

animation-timing-function: ease-in;

5.animation-delay

//設置延遲時間

animation-delay: 1s; 

6.animation-iteration-count

//設置迴圈次數

animation-iteration-count: infinite; 

屬性值

說明

次數

預設值為 1

infinite

表示無限次迴圈

7.animation-direction

//設置緩動方向交替

animation-direction: alternate;

屬性值

說明

normal 

預設值,每次播放向前

alternate

 一次向前,一次向後,一次向前,一次向後這樣交替

8.animation-play-state

//設置停止播放動畫 

animation-play-state: paused;

9.animation-fill-mode

//設置結束後不在返回 

animation-fill-mode: forwards;

屬性值

說明

none

預設值,表示按預期進行和結束

forwards

動畫結束後繼續應用最後關鍵幀位置,即不返回

backforwards

動畫結束後迅速應用起始關鍵幀位置,即返回

both

根據情況產生 forwards 或 backforwards 的效果

//both 需要結合,次數和播放方向 animation-iteration-count: 4; animation-direction: alternate;

 

六.簡寫和版本

//簡寫形式完整版

animation: myani 1s ease 2 alternate 0s both;

為了相容舊版本,需要加上相應的瀏覽器首碼,版本信息如下表:

 

Opera

Firefox

Chrome

Safari

IE

支持需帶首碼

15 ~ 29

5 ~ 15

4 ~ 42

4 ~ 8

支持不帶首碼

16+

43+

10.0+

 //相容完整版,Opera 在這個屬性上加入 webkit,所以沒有

-o--webkit-animation: myani 1s ease 2 alternate 0s both;
-moz-animation: myani 1s ease 2 alternate 0s both;
-ms-animation: myani 1s ease 2 alternate 0s both;
transition: all 1s ease 0s;

//@keyframes 也需要加上首碼 

@-webkit-keyframes myani {...} 
@-moz-keyframes myani {...} 
@-o-keyframes myani {...} 
@-ms-keyframes myani {...} 
keyframes myani {...}

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 學習要點: 1.新版本 主講教師:李炎恢 本章主要探討 HTML5 中 CSS3 提供的用來實現未來響應式彈性伸縮佈局方案,這裡做一個初步的瞭解。 一.新版本 新版本的 Flexbox 模型是 2012 年 9 月提出的工作草案,這個草案是由 W3C 推出的最新語法。這個版本立志於指定標準,讓新式的 ...
  • 學習要點: 1.混合過度版 主講教師:李炎恢 本章主要探討 HTML5 中 CSS3 提供的用來實現未來響應式彈性伸縮佈局方案,這裡做一個初步的瞭解。 一.混合過渡版 混合版本的 Flexbox 模型是 2011 年提出的工作草案,主要是針對 IE10 瀏覽器實現的伸縮佈局效果,其功能和舊版本的屬性 ...
  • 學習要點: 1.佈局簡介 2.舊版本 主講教師:李炎恢 本章主要探討 HTML5 中 CSS3 提供的用來實現未來響應式彈性伸縮佈局方案,這裡做一個初步的瞭解。 一.佈局簡介 CSS3 提供一種嶄新的佈局方式:Flexbox 佈局,即彈性伸縮佈局模型(Flexible Box)。用來提供一個更加有效 ...
  • Transform-變形 CSS3 2D Transform translate() 移動:將HTML元素在x-y軸平面上做位移,且不會影響到其他元素 translate(x,y)水平方向和垂直方向同時移動(也就是X軸和Y軸同時移動) translateX(x)僅水平方向移動(X軸移動) trans ...
  • 學習要點: 1.早期多列問題 2.屬性及版本 3.屬性解釋 主講教師:李炎恢 本章主要探討 HTML5 中 CSS3 提供的多列佈局,通過多列佈局我們方便的創建流體的多列佈局。 一.早期多列問題 我們有時想佈局成報紙、雜誌那樣的多列方式(至少兩列,一般三列以上),但早期 CSS 提供的佈局方式都有著 ...
  • 學習要點: 1.定位佈局 2.box-sizing 3.resize 主講教師:李炎恢 本章主要探討 HTML5 中 CSS 早期所使用的傳統佈局,很多情況下,這些佈局方式還是非常有用的。 一.定位佈局 在使用定位佈局前,我們先瞭解一下定位屬性的用法。CSS2 提供了 position 屬性來實現元 ...
  • 列表組可以用來製作列表清單、垂直導航等效果,也可以配合其他的組件製作出更漂亮的組件,列表組在bootstrap框架中也是一個獨立的組件,所以也對應有自己獨立源碼: LESS:list-group.less SASS:_list-group.scss 列表組看上去就是去掉了列表符號的列表項,並且配上一... ...
  • 學習要點: 1.佈局模型 2.表格佈局 3.浮動佈局 主講教師:李炎恢 本章主要探討 HTML5 中 CSS 早期所使用的傳統佈局,很多情況下,這些佈局方式還是非常有用的。 一.佈局模型 在早期沒有平板和智能手機等移動設備大行其道的時期,Web 頁面的設計主要是面向 PC 端電腦解析度展開的。這種分 ...
一周排行
    -Advertisement-
    Play Games
  • 示例項目結構 在 Visual Studio 中創建一個 WinForms 應用程式後,項目結構如下所示: MyWinFormsApp/ │ ├───Properties/ │ └───Settings.settings │ ├───bin/ │ ├───Debug/ │ └───Release/ ...
  • [STAThread] 特性用於需要與 COM 組件交互的應用程式,尤其是依賴單線程模型(如 Windows Forms 應用程式)的組件。在 STA 模式下,線程擁有自己的消息迴圈,這對於處理用戶界面和某些 COM 組件是必要的。 [STAThread] static void Main(stri ...
  • 在WinForm中使用全局異常捕獲處理 在WinForm應用程式中,全局異常捕獲是確保程式穩定性的關鍵。通過在Program類的Main方法中設置全局異常處理,可以有效地捕獲並處理未預見的異常,從而避免程式崩潰。 註冊全局異常事件 [STAThread] static void Main() { / ...
  • 前言 給大家推薦一款開源的 Winform 控制項庫,可以幫助我們開發更加美觀、漂亮的 WinForm 界面。 項目介紹 SunnyUI.NET 是一個基於 .NET Framework 4.0+、.NET 6、.NET 7 和 .NET 8 的 WinForm 開源控制項庫,同時也提供了工具類庫、擴展 ...
  • 說明 該文章是屬於OverallAuth2.0系列文章,每周更新一篇該系列文章(從0到1完成系統開發)。 該系統文章,我會儘量說的非常詳細,做到不管新手、老手都能看懂。 說明:OverallAuth2.0 是一個簡單、易懂、功能強大的許可權+可視化流程管理系統。 有興趣的朋友,請關註我吧(*^▽^*) ...
  • 一、下載安裝 1.下載git 必須先下載並安裝git,再TortoiseGit下載安裝 git安裝參考教程:https://blog.csdn.net/mukes/article/details/115693833 2.TortoiseGit下載與安裝 TortoiseGit,Git客戶端,32/6 ...
  • 前言 在項目開發過程中,理解數據結構和演算法如同掌握蓋房子的秘訣。演算法不僅能幫助我們編寫高效、優質的代碼,還能解決項目中遇到的各種難題。 給大家推薦一個支持C#的開源免費、新手友好的數據結構與演算法入門教程:Hello演算法。 項目介紹 《Hello Algo》是一本開源免費、新手友好的數據結構與演算法入門 ...
  • 1.生成單個Proto.bat內容 @rem Copyright 2016, Google Inc. @rem All rights reserved. @rem @rem Redistribution and use in source and binary forms, with or with ...
  • 一:背景 1. 講故事 前段時間有位朋友找到我,說他的窗體程式在客戶這邊出現了卡死,讓我幫忙看下怎麼回事?dump也生成了,既然有dump了那就上 windbg 分析吧。 二:WinDbg 分析 1. 為什麼會卡死 窗體程式的卡死,入口門檻很低,後續往下分析就不一定了,不管怎麼說先用 !clrsta ...
  • 前言 人工智慧時代,人臉識別技術已成為安全驗證、身份識別和用戶交互的關鍵工具。 給大家推薦一款.NET 開源提供了強大的人臉識別 API,工具不僅易於集成,還具備高效處理能力。 本文將介紹一款如何利用這些API,為我們的項目添加智能識別的亮點。 項目介紹 GitHub 上擁有 1.2k 星標的 C# ...