欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

css transition animation的使用(內(nèi)含貝賽爾曲線詳解)

  發(fā)布時(shí)間:2019-09-03 15:46:51   作者:買(mǎi)辣椒也用券   我要評(píng)論
這篇文章主要介紹了css transition animation的使用(內(nèi)含貝賽爾曲線詳解),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

區(qū)別:

transition也叫過(guò)渡動(dòng)畫(huà),主要是用于讓一個(gè)元素從一種狀態(tài)過(guò)渡到另一種狀態(tài)效果,常用于主動(dòng)觸發(fā)的效果。例如移動(dòng)端的頁(yè)面切換(很常用)、button點(diǎn)擊效果(也很常見(jiàn))。

animation才是css3正宗的動(dòng)畫(huà),主要是用于實(shí)現(xiàn)某種持續(xù)的動(dòng)畫(huà)效果(當(dāng)然簡(jiǎn)單的過(guò)渡動(dòng)畫(huà)也可以實(shí)現(xiàn)),常用于自動(dòng)觸發(fā)的效果。例如加載中的持續(xù)動(dòng)畫(huà)效果等等。

在學(xué)習(xí)這兩種動(dòng)畫(huà)之前要最好是先了解一下 transition-timing-function(過(guò)渡效果時(shí)間曲線);

舉個(gè)栗子

比如一輛小汽車(chē)從a點(diǎn)到b點(diǎn)的運(yùn)動(dòng)過(guò)程是一個(gè)動(dòng)畫(huà),那么過(guò)渡效果時(shí)間曲線就是這輛小汽車(chē)到底是勻速過(guò)去呢還是一直加速?zèng)_過(guò)去,又或者說(shuō)一會(huì)加速?zèng)_一會(huì)減速慢行。

這個(gè)屬性有五種可供選擇的屬性值和一種可以自定義的屬性值

自定義屬性值:cubic-bezier(n,n,n,n)

在了解這個(gè)自定義屬性值之前我們?cè)賮?lái)深入了解一下貝塞爾曲線。

為什么要了解貝塞爾曲線?因?yàn)檫@個(gè)自定義時(shí)間過(guò)渡曲線就是用貝塞爾曲線表示的。(這是一個(gè)三階的貝塞爾曲線)

貝塞爾曲線應(yīng)用場(chǎng)景有哪些?貝塞爾曲線不僅僅在描述速度、時(shí)間上會(huì)起作用,在ps中的色彩調(diào)節(jié)和一些建筑工程學(xué)上面都會(huì)有涉及。

那我們先來(lái)畫(huà)一個(gè)二階的貝塞爾曲線吧。

首先打開(kāi)ps,在一個(gè)平面內(nèi)隨便畫(huà)三個(gè)點(diǎn)a、b、c然后連接起來(lái),如下圖。

然后在a、b中找到一點(diǎn)d,在b、c中找到一點(diǎn)e,滿(mǎn)足公式:ad/ab = be/bc

然后呢,連接d、e,在de線上找到一點(diǎn)f,滿(mǎn)足公式:df/de = ad/ab = be/bc

然后就沒(méi)有然后了,因?yàn)檫@個(gè)二階貝塞爾曲線已經(jīng)畫(huà)完了,這個(gè)曲線就是所有可能的f點(diǎn)。

然后我用谷歌瀏覽器調(diào)試工具再演示一下二階貝塞爾曲線圖(本來(lái)是想用火狐演示的,但是火狐瀏覽器調(diào)試曲線的時(shí)候?qū)蛹?jí)有點(diǎn)高,還很敏感,無(wú)法用gif工具錄制,所以就放棄了,但實(shí)際上我更喜歡火狐的調(diào)試動(dòng)畫(huà)調(diào)試工具一點(diǎn)。)

1、上面的球代表動(dòng)畫(huà)執(zhí)行的過(guò)程,球越快,顏色越淺,反之越深。

2、兩個(gè)固定點(diǎn)的坐標(biāo)是(0,0)和(1,1)

3、可調(diào)試點(diǎn)的坐標(biāo)是隨意拉動(dòng)的,x軸要在0-1之間,y軸隨意。

4、x軸代表的時(shí)間,y軸代表的是路程(因?yàn)楹芏鄤?dòng)畫(huà)并不是簡(jiǎn)單的左右移動(dòng),所以以后要理解成動(dòng)畫(huà)執(zhí)行的過(guò)程),注意:y軸不是速度,更不是加速度哦。

5、最下面的是cubic-bezier屬性具體取到的值(后面再講里面4個(gè)值得具體含義)

但實(shí)際開(kāi)發(fā)過(guò)程中我們用到的大部分都是三階貝塞爾曲線(當(dāng)然也有用多階貝塞爾曲線的),也就是用兩個(gè)點(diǎn)去控制曲線的弧度,具體原理和上面的類(lèi)似,如圖:

現(xiàn)在就可以解釋cubic-bezier為什么有四個(gè)值,就是這個(gè)兩個(gè)坐標(biāo)點(diǎn)。

再次聲明一下,y軸是距離,不是速度和加速度

cubic-bezier屬性還有五個(gè)可供選擇的值:(其實(shí)就是幾種寫(xiě)死的過(guò)渡效果曲線)

 ·linear      規(guī)定以相同速度開(kāi)始至結(jié)束的過(guò)渡效果(等于 cubic-bezier(0,0,1,1))。
    ·ease       規(guī)定慢速開(kāi)始,然后變快,然后慢速結(jié)束的過(guò)渡效果(cubic-bezier(0.25,0.1,0.25,1))。
    ·ease-in        規(guī)定以慢速開(kāi)始的過(guò)渡效果(等于 cubic-bezier(0.42,0,1,1))。
    ·ease-out       規(guī)定以慢速結(jié)束的過(guò)渡效果(等于 cubic-bezier(0,0,0.58,1))。
    ·ease-in-out        規(guī)定以慢速開(kāi)始和結(jié)束的過(guò)渡效果(等于 cubic-bezier(0.42,0,0.58,1))。

一、transition (過(guò)渡動(dòng)畫(huà)) 

屬性 描述 CSS

transition

簡(jiǎn)寫(xiě)屬性,用于在一個(gè)屬性中設(shè)置四個(gè)過(guò)渡屬性。 3

transition-property

規(guī)定應(yīng)用過(guò)渡的 CSS 屬性的名稱(chēng)。 3

transition-duration

定義過(guò)渡效果花費(fèi)的時(shí)間。默認(rèn)是 0。 3

transition-timing-function

規(guī)定過(guò)渡效果的時(shí)間曲線。默認(rèn)是 "ease"。 3

transition-delay

規(guī)定過(guò)渡效果何時(shí)開(kāi)始。默認(rèn)是 0。 3
 

實(shí)例: 

<!DOCTYPE html>
<html>
<head>
<style> 
div{
    width:100px;
    height:100px;
    background:yellow;
    transition-property:width;
    transition-duration:1s;
    transition-timing-function:cubic-bezier(0,0,1,1);
    transition-delay:0s;
}
div:hover{
    width:500px;
}
</style>
</head>
<body>
<div></div>
<p>請(qǐng)把鼠標(biāo)指針?lè)诺近S色的 div 元素上,來(lái)查看過(guò)渡效果。</p>
<p><b>注釋?zhuān)?lt;/b>本例在 Internet Explorer 中無(wú)效。</p>
<p><b>注釋?zhuān)?lt;/b>這個(gè)過(guò)渡效果會(huì)在開(kāi)始之前等待兩秒。</p>
</body>
</html>

效果如下

transition簡(jiǎn)化屬性寫(xiě)法:
transition: property duration timing-function delay;

默認(rèn)值是transition:all 0 ease 0;

注意事項(xiàng)

在移動(dòng)開(kāi)發(fā)中直接使用transition動(dòng)畫(huà)會(huì)讓頁(yè)面變得非常卡頓(親測(cè)),所以我們常用transform:translate3D(0,0,0)或者transform:translateZ(0)來(lái)開(kāi)啟移動(dòng)端動(dòng)畫(huà)的gpu加速,使動(dòng)畫(huà)過(guò)程更流暢。
translate3D(0,0,0)是指電儀3D轉(zhuǎn)換
translateZ(0)是指定義3D轉(zhuǎn)換,只用Z軸

二、animation(動(dòng)畫(huà)效果)

因?yàn)閍nimation動(dòng)畫(huà)是一段持續(xù)且循環(huán)的動(dòng)畫(huà)效果,所以不像transition過(guò)渡動(dòng)畫(huà)那樣簡(jiǎn)潔,可能會(huì)涉及到很復(fù)雜的動(dòng)畫(huà)效果,所以我們要先學(xué)習(xí)一下@keyframes規(guī)則
該規(guī)則是用來(lái)創(chuàng)建動(dòng)畫(huà)的,說(shuō)直白點(diǎn)就是告訴元素按哪種動(dòng)畫(huà)效果執(zhí)行

@keyframes語(yǔ)法

@keyframes animationname {keyframes-selector {css-styles;}}

 

描述
animationname 必需。定義動(dòng)畫(huà)的名稱(chēng)。
keyframes-selector

必需。動(dòng)畫(huà)時(shí)長(zhǎng)的百分比。

合法的值:

  • 0-100%
  • from(與 0% 相同)
  • to(與 100% 相同)
css-styles 必需。一個(gè)或多個(gè)合法的 CSS 樣式屬性。

案例

<!DOCTYPE html>
<html>
<head>
<style> 
div{
    width:100px;
    height:100px;
    background:red;
    position:relative;
    animation:mymove 5s infinite;
    -moz-animation:mymove 5s infinite; /* Firefox */
    -webkit-animation:mymove 5s infinite; /*Safari and Chrome */
    -o-animation:mymove 5s infinite; /* Opera */
}
@keyframes mymove{
    0%   {top:0px;}
    25%  {top:200px;}
    75%  {top:50px}
    100% {top:100px;}
}
@-moz-keyframes mymove /* Firefox */{
    0%   {top:0px;}
    25%  {top:200px;}
    75%  {top:50px}
    100% {top:100px;}
}
@-webkit-keyframes mymove /* Safari and Chrome */{
    0%   {top:0px;}
    25%  {top:200px;}
    75%  {top:50px}
    100% {top:100px;}
}
@-o-keyframes mymove /* Opera */{
    0%   {top:0px;}
    25%  {top:200px;}
    75%  {top:50px}
    100% {top:100px;}
}
</style>
</head>
<body>
<p><b>注釋?zhuān)?lt;/b>本例在 Internet Explorer 中無(wú)效。</p>
<div></div>
</body>
</html>

效果如下:

說(shuō)明

也就是說(shuō)keyframes允許你設(shè)置在不同的時(shí)間段執(zhí)行不同的動(dòng)畫(huà)效果

css3 動(dòng)畫(huà)屬性 

屬性 描述 CSS

@keyframes

規(guī)定動(dòng)畫(huà)。 3

animation

所有動(dòng)畫(huà)屬性的簡(jiǎn)寫(xiě)屬性,除了 animation-play-state 屬性。 3

animation-name

規(guī)定 @keyframes 動(dòng)畫(huà)的名稱(chēng)。 3

animation-duration

規(guī)定動(dòng)畫(huà)完成一個(gè)周期所花費(fèi)的秒或毫秒。默認(rèn)是 0。 3

animation-timing-function

規(guī)定動(dòng)畫(huà)的速度曲線。默認(rèn)是 "ease"。 3

animation-delay

規(guī)定動(dòng)畫(huà)何時(shí)開(kāi)始。默認(rèn)是 0。 3

animation-iteration-count

規(guī)定動(dòng)畫(huà)被播放的次數(shù)。默認(rèn)是 1。 3

animation-direction

規(guī)定動(dòng)畫(huà)是否在下一周期逆向地播放。默認(rèn)是 "normal"。 3

animation-play-state

規(guī)定動(dòng)畫(huà)是否正在運(yùn)行或暫停。默認(rèn)是 "running"。 3

animation-fill-mode

規(guī)定對(duì)象動(dòng)畫(huà)時(shí)間之外的狀態(tài)。 3

<!DOCTYPE html>
<html>
<head>
<style> 
div{
    width:100px;
    height:100px;
    background:red;
    position:relative;
    animation:myfirst 5s linear 2s infinite alternate;
    -moz-animation:myfirst 5s linear 2s infinite alternate;/* Firefox: */
    -webkit-animation:myfirst 5s linear 2s infinite alternate;/* Safari and Chrome: */
    -o-animation:myfirst 5s linear 2s infinite alternate;/* Opera: */
}
@keyframes myfirst{
    0%   {background:red; left:0px; top:0px;}
    25%  {background:yellow; left:200px; top:0px;}
    50%  {background:blue; left:200px; top:200px;}
    75%  {background:green; left:0px; top:200px;}
    100% {background:red; left:0px; top:0px;}
}
@-moz-keyframes myfirst /* Firefox */{
    0%   {background:red; left:0px; top:0px;}
    25%  {background:yellow; left:200px; top:0px;}
    50%  {background:blue; left:200px; top:200px;}
    75%  {background:green; left:0px; top:200px;}
    100% {background:red; left:0px; top:0px;}
}
@-webkit-keyframes myfirst /* Safari and Chrome */{
    0%   {background:red; left:0px; top:0px;}
    25%  {background:yellow; left:200px; top:0px;}
    50%  {background:blue; left:200px; top:200px;}
    75%  {background:green; left:0px; top:200px;}
    100% {background:red; left:0px; top:0px;}
}
@-o-keyframes myfirst /* Opera */{
    0%   {background:red; left:0px; top:0px;}
    25%  {background:yellow; left:200px; top:0px;}
    50%  {background:blue; left:200px; top:200px;}
    75%  {background:green; left:0px; top:200px;}
    100% {background:red; left:0px; top:0px;}
}
</style>
</head>
<body>
<p><b>注釋?zhuān)?lt;/b>本例在 Internet Explorer 中無(wú)效。</p>
<div></div>
</body>
</html>

效果如下:

彩蛋

在火狐和谷歌中可以很方便的調(diào)處過(guò)渡效果時(shí)間曲線的定時(shí)函數(shù)編輯器,只用點(diǎn)擊下面的按鈕就可以了。

谷歌中:

火狐中:

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論