css3 過渡記


CSS3 過渡

  CSS3的transition允許CSS的屬性值在一定的時間區間內平滑地過渡。這種效果可以在鼠標單擊,獲得焦點,被點擊或對元素任何改變中觸發,並平滑地以動畫效果改變CSS的屬性值。

transition:[<transition-property> || <transition-duration> || <transition-timing-function> || <transition-delay>]

  transition-property:指定過渡的CSS屬性。
  transition-duration:指定完成過渡所需的時間。
  transition-timing-function:指定過渡調速函數。
  transition -delay:指定過渡開始出現的延遲時間。

  transition屬性類似於border,font這些屬性,可以簡寫,也可以單獨來寫。簡寫時,各函數之間用空格隔開,且需要按一定的順序排列。另外,作用於多個過渡屬性時,中間用逗號隔開。如下:

<!DOCTYPE html>

<html lang="en" xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta charset="utf-8" />
<title></title>
<style>
   div{
       width:50px;
       height:100px;
       background:#ffd800;
       /*分開使用transition的擴展屬性*/
       transition-property:width,height,background;
       transition-duration:1s;
       transition-timing-function:ease;
       transition-delay:.2s;
       /*使用transition簡寫屬性*/
       transition:width 1s ease .2s,height 1s ease .2s,background 1s ease .2s;
   }
   div:hover{
       width:100px;
       height:50px;
       background:#00ff90;
   }
</style>
</head>
<body>
	<div></div>
</body>
</html>

transition-property語法:

transition-property:no | all | <single-transition-property> [, <single-transition-property>] *

  none:沒有指定任何樣式。
  all:默認值,表示指定元素所有支持transition-property屬性的樣式。
  <single-transition-property>:指定一個或多個樣式。
  並不是所有樣式都能應用transition-property進行過渡,只有具有一個中點值的樣式才能具備過渡效果,如顏色,長度,漸變等。

transition-duration語法

transition-duration:<time> [,<time>] *  

  <time>為數值,單位為s(秒)或ms(毫秒),默認值是0。當有多個過渡屬性時,可以設置多個過渡時間分別應用過渡屬性,也可以設置一個過渡時間應用所有過渡屬性。

transition-timing-function語法

transition-timing-function:<single-transition-timing-function> [,<single-transition-timing-function>] *  

  單一的過渡函數

  <single-transition-timing-function>指單一的過渡函數,主要包括下面幾個屬性值。
  ease:默認值,元素樣式從初始狀態過渡到終止狀態時速度由快到慢,逐漸變慢。
  linear:元素樣式從初始狀態過渡到終止狀態速度是恆速。
  ease-in:元素樣式從初始狀態過渡到終止狀態時,速度越來越快,呈一種加速狀態。這種效果稱為漸顯效果。
  ease-out:元素樣式從初始狀態過渡到終止狀態時,速度越來越慢,呈一種減速狀態。這種效果稱為漸隱效果。
  ease-in-out:元素樣式從初始狀態到終止狀態時,先加速再減速。這種效果稱為漸顯漸隱效果。

  三次貝塞爾曲線:用來定義精確度更高的過渡函數。

  定義三次貝賽爾曲線的語法如下:

cubic-bezier(p0,p1,p2,p3)

  每個點值只允許0~1的值,相當於0%到100%,p0與p3的值固定的,他們始終代表起點坐標(0,0)與終點坐標(1,1)。因此只需要設置p1,p2的點值就行了。

可以用在線的三次貝塞爾工具模擬並實現。

<!DOCTYPE html>

<html lang="en" xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta charset="utf-8" />
<title></title>
<style>
   div{
       width:50px;
       height:100px;
       background:#ffd800;
       transition-property:width,height,background;
       transition-duration:1s;
		/*定義了三次貝塞爾曲線函數,p1的坐標是(.57,.07),p2的坐標是(.69,.16)*/
       transition-timing-function:cubic-bezier(.57,.07,.69,.16);
       transition-delay:.2s;
   }
   div:hover{
       width:100px;
       height:50px;
       background:#00ff90;
   }
</style>
</head>
<body>
	<div></div>
</body>
</html>

  steps()函數:用於把整個操作領域划成同樣大小的間隔,每個間隔都是相等的。

steps(<integer> [, [start | end]]?)

  第一個參數是一個數值,主要用來指定steps()函數的間隔數量,此值必須是一個大於0的正整數。
  第二個參數是可選的,默認值為end。

  transition-timing-function:steps(3,start);
  

  表示分3個步驟,動畫的步驟效果從每步的開始時跳,所以步驟是3/1, 3/2, 3/3。

  transition-timing-function:steps(3,end);

  

  表示分3個步驟,動畫的步驟效果從每步的結束時跳,所以步驟是0, 3/1, 3/2。

transition-delay語法

transition-delay:<time> [, <time>] *

  transition-delay:用來指定一個動畫開始執行的時間,也就是說當改變元素屬性值后多長時間開始執行過渡效果,它可以是正整數,負整數和0,非零的時候必須將單位設置為s(秒)或ms(毫秒)。
  正整數時好理解,就是延遲幾秒開始執行過渡,負整數時,將元素的之前時間截斷,也就是transition-duration過渡時間所用的值減去transition-delay的延遲值,這中間的值不會發生,直接跳到剩下的值進行過渡。

CSS3過渡的基礎知識你已經掌握了,簡單來說就是一個屬性四個值,接下來只需要打幾遍代碼,體會一下各值效果,就可以融會貫通了。


免責聲明!

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



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