首頁 >web前端 >css教學 >css3的@keyframes是什麼

css3的@keyframes是什麼

青灯夜游
青灯夜游原創
2018-11-24 14:47:004738瀏覽

這篇文章帶給大家的內容是介紹css3的@keyframes是什麼,讓大家簡單了解@keyframes可以如何使用。有一定的參考價值,有需要的朋友可以參考一下,希望對你們有幫助。

CSS3 @keyframes是什麼?有什麼用?

@keyframes是CSS3的一種規則,可以用來定義CSS動畫的一個週期的行為,可以創造簡單的動畫。 【相關影片教學推薦:CSS3教學

動畫與轉換類似,因為它們都是隨時間改變CSS屬性的表示值。主要差異在於,當屬性值變更時(例如,當懸停時屬性值發生變化時),轉換會隱式的觸發,但在套用動畫屬性時會明確執行動畫。因此,動畫需要顯示動畫屬性的明確值。這些值是在@keyframes規則中指定的動畫關鍵影格定義的。因此,@keyframes規則裡是由一組封裝的CSS樣式規則組成的,這些規則描述了屬性值如何隨時間變化。

然後,使用不同的CSS  animation(動畫)屬性,可以控制動畫的許多不同方面,包括動畫迭代的次數,是否在開始和結束值之間交替,以及動畫是否應該運行或暫停。動畫也可以延遲其開始時間。

@keyframe規則由關鍵字「@keyframe」組成,後面接著是給出動畫名稱的識別碼(將使用animation-name引用),接著是透過一組樣式規則(以大括號分隔) 。然後,透過使用標識符作為animation-name屬性的值,將動畫應用於元素。例如:

/* 定义动画*/
@keyframes 动画名称{
    /* 样式规则*/
}

/* 将它应用于元素 */
.element {
    animation-name: 动画名称(在@keyframes中已经声明好的);

    /* 或使用动画简写属性*/
    animation: 动画名称 1s ...
}

在@keyframes規則的大括號裡有什麼?

在大括號中,我們需要定義關鍵影格或航點,這些關鍵影格或航點指定在動畫期間的特定點處正在動畫化的屬性的值。這允許我們控制動畫序列中的中間步驟。例如,一個簡單動畫的@keyframe可以是這樣:

@keyframes change-bg-color {
    0% {
        background-color: red;
    }
    50% {
        background-color: blue;
    }
    100%{
    	background-color: red;
    }
}
.demo{
	 -webkit-animation:change-bg-color 5s infinite;
         animation: change-bg-color 5s infinite;
}

運行效果:

css3的@keyframes是什麼

#'0%'、'50%'、'100% '都是關鍵影格選擇器,每個選擇器定義一個關鍵影格規則。關鍵幀規則的關鍵幀聲明區塊由屬性和值組成。

上述動畫類似於簡單的過渡效果:背景顏色從動畫開頭的一個值(0%)開始變化,在中間達到一個值(50%),在動畫結束時達到另一個值(100 %)。 「0%」、」50%」和「100%」關鍵幀選擇器定義了希望動畫屬性更改值的航點或百分點。我們也可以使用選擇器關鍵字 from,to而不是分別使用0%和100%,它們是等效的。

@keyframes change-bg-color {
   from{
        background-color: red;
    }
    50% {
        background-color: blue;
    }
    to{
    	background-color: red;
    }
}

關鍵影格選擇器由一個或多個以逗號分隔的百分比值或from和to關鍵字組成。請注意,百分比單位說明符必須用於百分比值。因此,'0'是無效的關鍵幀選擇器。

以下是具有關鍵影格選擇器的動畫範例,其中包含多個以逗號分隔的百分比值和/或關鍵字關鍵影格選擇器from和to。

@keyframes bouncing {
    0%, 50%, 100% { /* 或者 from, 50%, to */
        top: 0;
    }
    25%, 75% {
        top: 100px;
    }
}

上面的@keyframes規則定義:元素的頂部偏移量在開始時,中途和動畫結束時將等於零,並且它將四分之一和四分之三路徑時等於100px; 這意味著元素在動畫循環中上下移動了好幾次。

@keyframes規則建立簡單動畫的範例:

#1、定義動畫發生的空間

HTML程式碼:

<div class="container">
  <div class="element"></div>
</div>

2、使用@keyframes規則建立簡單動畫

css程式碼

body {
  background-color: #fff;
  color: #555;
  font-size: 1.1em;
  font-family: &#39;Helvetica Neue&#39;, Helvetica, Arial, sans-serif;
}
.container {
  margin: 50px auto;
  min-width: 320px;
  max-width: 500px;
}

.element {
  margin: 0 auto;
  width: 100px;
  height: 100px;
  background-color: #0099cc;
  border-radius: 50%;
  position: relative;
  top: 0;
  -webkit-animation: bounce 2s infinite;
  animation: bounce 2s infinite;
}

@-webkit-keyframes bounce {
  from {
    top: 100px;
    -webkit-animation-timing-function: ease-out;
    animation-timing-function: ease-out;
  }
  25% {
    top: 50px;
    -webkit-animation-timing-function: ease-in;
    animation-timing-function: ease-in;
  }
  50% {
    top: 150px;
    -webkit-animation-timing-function: ease-out;
    animation-timing-function: ease-out;
  }
  75% {
    top: 75px;
    -webkit-animation-timing-function: ease-in;
    animation-timing-function: ease-in;
  }
  to {
    top: 100px;
  }
}

@keyframes bounce {
  from {
    top: 100px;
    -webkit-animation-timing-function: ease-out;
    animation-timing-function: ease-out;
  }
  25% {
    top: 50px;
    -webkit-animation-timing-function: ease-in;
    animation-timing-function: ease-in;
  }
  50% {
    top: 150px;
    -webkit-animation-timing-function: ease-out;
    animation-timing-function: ease-out;
  }
  75% {
    top: 75px;
    -webkit-animation-timing-function: ease-in;
    animation-timing-function: ease-in;
  }
  to {
    top: 100px;
  }
}

3、執行效果

css3的@keyframes是什麼

在上面的範例中,為名為「bounce」的動畫指定了五個關鍵影格。在第一和第二關鍵影格之間(即,在'0%'和'25%'之間),使用ease-out定時功能。在第二和第三關鍵影格之間(即,在'25%'和'50%'之間),使用ease-in定時功能,等等。效果將顯示為向上移動50px的元素,在達到其最高點時減慢,然後在它回落到150px時加速。動畫的後半部以類似的方式運行,但僅將元素向上移動25px。此動畫產生一個彈跳效果,可用於模擬彈跳球動畫。

說明:

@keyframes規則不級聯 ; 因此,動畫永遠不會從多個@keyframes規則派生關鍵影格。

要確定關鍵影格集,選擇器中的所有值都需依時間遞增排序。如果存在任何重複項(例如,如果我們編寫了兩個'50%'關鍵幀規則和聲明區塊),則@keyframes規則將指定最後一個關鍵幀用於提供該時間的關鍵幀資訊。 @keyframes如果多個關鍵影格指定相同的關鍵影格選擇器值,則規則中沒有級聯。

總結:以上就是這篇文章的全部內容,希望能對大家的學習有所幫助。

以上是css3的@keyframes是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn