CSS動(dòng)畫(huà)往往可以通過(guò)對(duì)不同的屬性設(shè)置關(guān)鍵幀來(lái)實(shí)現(xiàn)復(fù)雜的動(dòng)畫(huà)效果,但是如果多個(gè)屬性同時(shí)進(jìn)行動(dòng)畫(huà),會(huì)出現(xiàn)執(zhí)行同步或異步的問(wèn)題,這時(shí)候我們需要利用CSS動(dòng)畫(huà)的順序執(zhí)行來(lái)解決。
.box{ width:100px; height:100px; background-color:red; position:relative; animation: move 2s ease-out forwards, scale 1s ease-in-out forwards; } @keyframes move{ from{ left:0; } to{ left:300px; } } @keyframes scale{ from{ transform:scale(1); } to{ transform:scale(1.5); } }
在上面的代碼中,我們給盒子設(shè)置了兩個(gè)動(dòng)畫(huà),分別為move和scale,move是將盒子從左側(cè)移動(dòng)到右側(cè),scale是放大盒子的大小。但是,如果不設(shè)置順序執(zhí)行,它們會(huì)同時(shí)進(jìn)行,導(dǎo)致動(dòng)畫(huà)效果不盡如人意。
因此,我們?cè)O(shè)置了動(dòng)畫(huà)執(zhí)行順序,將move設(shè)置在前面,scale設(shè)置在后面,這樣當(dāng)move執(zhí)行完畢后再執(zhí)行scale動(dòng)畫(huà),就可以獲得我們所期望的動(dòng)畫(huà)效果。
在animation屬性中,我們可以設(shè)置多個(gè)動(dòng)畫(huà),并用逗號(hào)隔開(kāi),同時(shí)這些動(dòng)畫(huà)也可以設(shè)置不同的延遲時(shí)間和持續(xù)時(shí)間,來(lái)進(jìn)一步控制它們的執(zhí)行順序。
.box{ width:100px; height:100px; background-color:red; position:relative; animation: move 2s ease-out forwards, scale 1.5s 1.5s ease-in-out forwards; } @keyframes move{ from{ left:0; } to{ left:300px; } } @keyframes scale{ from{ transform:scale(1); } to{ transform:scale(1.5); } }
在上面的代碼中,我們?cè)黾恿藄cale動(dòng)畫(huà)的延遲時(shí)間為1.5s,所以它會(huì)在move動(dòng)畫(huà)執(zhí)行結(jié)束1.5s后開(kāi)始執(zhí)行,這樣更加靈活地控制動(dòng)畫(huà)的順序。
總之,CSS動(dòng)畫(huà)的順序執(zhí)行可以讓我們更好地控制動(dòng)畫(huà)效果,使其更加流暢、自然。