7878www免费看片_黑人巨茎精品欧美一区二区_国产成人avxxxxx在线观看_国产成人精品日本亚洲1_欧美午夜刺激影院_人妻波多野结衣爽到喷水_A在线视频播放免费视频完整版_欧美人与动牲猛交a欧美精品_人妻系列无码专区2020_中文字幕精品久久久久人妻红杏ⅰ

CSS動(dòng)畫(huà)-Animation講解

作者:管理員  來(lái)源:互聯(lián)網(wǎng)  發(fā)布時(shí)間:2025-12-09 10:36:51  點(diǎn)擊數(shù):0

CSS動(dòng)畫(huà)(Animation)是CSS3中一個(gè)強(qiáng)大的特性,允許您創(chuàng)建復(fù)雜的動(dòng)畫(huà)效果而無(wú)需使用JavaScript或Flash。動(dòng)畫(huà)( animation)是CSS3中具有顛覆性的特征之ー,可通過(guò)設(shè)置多個(gè)節(jié)點(diǎn)來(lái)精確控制一個(gè)或一組動(dòng)畫(huà)常用來(lái)實(shí)現(xiàn)復(fù)雜的動(dòng)畫(huà)效果。

相比較過(guò)渡,動(dòng)畫(huà)可以實(shí)現(xiàn)更多變化,更多控制的效果。


一、基本概念

CSS動(dòng)畫(huà)由兩部分組成:

@keyframes規(guī)則 - 定義動(dòng)畫(huà)序列

animation屬性 - 將動(dòng)畫(huà)應(yīng)用到元素并控制其行為


二、@keyframes 規(guī)則

@keyframes 用于定義動(dòng)畫(huà)在不同階段的樣式變化。

語(yǔ)法:

@keyframes animation-name {
  from {
    /* 起始狀態(tài) */
  }
  to {
    /* 結(jié)束狀態(tài) */
  }
}

/* 或使用百分比 */
@keyframes animation-name {
  0% {
    /* 起始狀態(tài) */
  }
  50% {
    /* 中間狀態(tài) */
  }
  100% {
    /* 結(jié)束狀態(tài) */
  }
}


示例:

@keyframes slideIn {
  from {
    transform: translateX(-100%);
    opacity: 0;
  }
  to {
    transform: translateX(0);
    opacity: 1;
  }
}

@keyframes bounce {
  0%, 100% {
    transform: translateY(0);
  }
  50% {
    transform: translateY(-30px);
  }
}


三、Animation 屬性


image


1. animation-name

指定要使用的@keyframes動(dòng)畫(huà)名稱。

.element {
  animation-name: slideIn;
}


2. animation-duration

定義動(dòng)畫(huà)完成一個(gè)周期所需的時(shí)間。

.element {
  animation-duration: 2s; /* 2秒 */
  animation-duration: 500ms; /* 500毫秒 */
}


3. animation-timing-function


image


設(shè)置動(dòng)畫(huà)的速度曲線,控制動(dòng)畫(huà)的加速/減速方式。

.element {
  /* 預(yù)定義值 */
  animation-timing-function: ease; /* 默認(rèn),慢-快-慢 */
  animation-timing-function: linear; /* 勻速 */
  animation-timing-function: ease-in; /* 慢開(kāi)始 */
  animation-timing-function: ease-out; /* 慢結(jié)束 */
  animation-timing-function: ease-in-out; /* 慢開(kāi)始和結(jié)束 */
  animation-timing-function: cubic-bezier(0.42, 0, 0.58, 1); /* 自定義貝塞爾曲線 */
  
  /* 步驟函數(shù) */
  animation-timing-function: steps(4, jump-start);
  animation-timing-function: step-start; /* 等同于 steps(1, jump-start) */
  animation-timing-function: step-end; /* 等同于 steps(1, jump-end) */
}


4. animation-delay

定義動(dòng)畫(huà)開(kāi)始前的延遲時(shí)間。

.element {
  animation-delay: 1s; /* 延遲1秒開(kāi)始 */
  animation-delay: -500ms; /* 立即開(kāi)始,但跳過(guò)前500ms的動(dòng)畫(huà) */
}


5. animation-iteration-count

設(shè)置動(dòng)畫(huà)重復(fù)播放的次數(shù)。

.element {
  animation-iteration-count: 1; /* 默認(rèn),播放一次 */
  animation-iteration-count: 3; /* 播放三次 */
  animation-iteration-count: infinite; /* 無(wú)限循環(huán) */
  animation-iteration-count: 2.5; /* 播放兩次半 */
}


6. animation-direction

定義動(dòng)畫(huà)播放的方向。

.element {
  animation-direction: normal; /* 默認(rèn),正向播放 */
  animation-direction: reverse; /* 反向播放 */
  animation-direction: alternate; /* 奇數(shù)次正向,偶數(shù)次反向 */
  animation-direction: alternate-reverse; /* 奇數(shù)次反向,偶數(shù)次正向 */
}


7. animation-fill-mode

定義動(dòng)畫(huà)在執(zhí)行前后如何將樣式應(yīng)用于元素。

.element {
  animation-fill-mode: none; /* 默認(rèn),動(dòng)畫(huà)前后不應(yīng)用任何樣式 */
  animation-fill-mode: forwards; /* 動(dòng)畫(huà)結(jié)束后保持最后一幀的樣式 */
  animation-fill-mode: backwards; /* 動(dòng)畫(huà)開(kāi)始前應(yīng)用第一幀的樣式(考慮delay) */
  animation-fill-mode: both; /* 同時(shí)應(yīng)用forwards和backwards */
}


8. animation-play-state

控制動(dòng)畫(huà)的播放狀態(tài)。

.element {
  animation-play-state: running; /* 默認(rèn),動(dòng)畫(huà)運(yùn)行 */
  animation-play-state: paused; /* 動(dòng)畫(huà)暫停 */
}

/* 通常與交互結(jié)合 */
.element:hover {
  animation-play-state: paused;
}


四、簡(jiǎn)寫(xiě)屬性

animation 簡(jiǎn)寫(xiě)

將所有動(dòng)畫(huà)屬性合并為一個(gè)屬性。


語(yǔ)法:

animation: name duration timing-function delay iteration-count direction fill-mode play-state;


示例:

.element {
  /* 完整寫(xiě)法 */
  animation: slideIn 2s ease-in-out 1s infinite alternate both;
  
  /* 簡(jiǎn)寫(xiě)(僅必要屬性) */
  animation: slideIn 2s;
  
  /* 多個(gè)動(dòng)畫(huà) */
  animation: 
    slideIn 2s ease-out,
    fadeIn 1.5s ease-in 0.5s;
}


五、實(shí)踐示例


示例1:基本淡入效果

@keyframes fadeIn {
  from { opacity: 0; }
  to { opacity: 1; }
}

.fade-in-element {
  animation: fadeIn 1s ease-in-out;
}


示例2:彈跳球效果

@keyframes bounce {
  0% {
    transform: translateY(0);
    animation-timing-function: ease-out;
  }
  50% {
    transform: translateY(-100px);
    animation-timing-function: ease-in;
  }
  100% {
    transform: translateY(0);
    animation-timing-function: ease-out;
  }
}

.ball {
  width: 50px;
  height: 50px;
  border-radius: 50%;
  background-color: red;
  animation: bounce 1.5s infinite;
}


示例3:加載旋轉(zhuǎn)器

@keyframes spin {
  0% { transform: rotate(0deg); }
  100% { transform: rotate(360deg); }
}

.spinner {
  width: 40px;
  height: 40px;
  border: 4px solid #f3f3f3;
  border-top: 4px solid #3498db;
  border-radius: 50%;
  animation: spin 1s linear infinite;
}


示例4:打字機(jī)效果

@keyframes typing {
  from { width: 0; }
  to { width: 100%; }
}

@keyframes blink {
  0%, 100% { border-color: transparent; }
  50% { border-color: black; }
}

.typewriter {
  overflow: hidden;
  white-space: nowrap;
  border-right: 3px solid;
  animation: 
    typing 3.5s steps(40, end),
    blink 0.75s step-end infinite;
}


六、性能優(yōu)化建議


1:優(yōu)先使用 transform 和 opacity

這些屬性可以由GPU加速,不會(huì)觸發(fā)重排

/* 好 - GPU加速 */
transform: translateX(100px);
opacity: 0.5;

/* 不好 - 可能觸發(fā)重排 */
left: 100px;
width: 200px;


2:使用 will-change 屬性

.animated-element {
  will-change: transform, opacity;
}


3:減少動(dòng)畫(huà)數(shù)量:避免同時(shí)過(guò)多元素動(dòng)畫(huà)


4:使用合適的 timing-function

考慮使用 cubic-bezier() 創(chuàng)建更自然的動(dòng)畫(huà)



七、瀏覽器兼容性


CSS動(dòng)畫(huà)在現(xiàn)代瀏覽器中得到廣泛支持:


Chrome 43+ (完全支持)

Firefox 16+ (完全支持)

Safari 9+ (完全支持)

Edge 12+ (完全支持)

Opera 30+ (完全支持)


對(duì)于舊版瀏覽器,可能需要添加前綴:

@-webkit-keyframes fadeIn { /* WebKit/Blink */ }
@-moz-keyframes fadeIn { /* Firefox */ }
@-o-keyframes fadeIn { /* Opera */ }
@keyframes fadeIn { /* 標(biāo)準(zhǔn) */ }

.element {
  -webkit-animation: fadeIn 2s;
  -moz-animation: fadeIn 2s;
  -o-animation: fadeIn 2s;
  animation: fadeIn 2s;
}


八、與 Transition 的區(qū)別


image


九、實(shí)用技巧


1. 暫停并恢復(fù)動(dòng)畫(huà)

.animated {
  animation: pulse 2s infinite;
}

.animated.paused {
  animation-play-state: paused;
}



2. 檢測(cè)動(dòng)畫(huà)結(jié)束

const element = document.querySelector('.animated');
element.addEventListener('animationend', () => {
  console.log('動(dòng)畫(huà)結(jié)束');
});


3. 創(chuàng)建進(jìn)度條

@keyframes progress {
  from { width: 0%; }
  to { width: 100%; }
}

.progress-bar {
  animation: progress 5s linear forwards;
}


總結(jié)

CSS動(dòng)畫(huà)提供了一種強(qiáng)大而靈活的方式來(lái)創(chuàng)建引人注目的視覺(jué)效果。通過(guò)合理使用@keyframes和各種動(dòng)畫(huà)屬性,您可以創(chuàng)建從簡(jiǎn)單到復(fù)雜的各種動(dòng)畫(huà)效果,而無(wú)需編寫(xiě)JavaScript代碼。記住要關(guān)注性能優(yōu)化,特別是在移動(dòng)設(shè)備上,并確保動(dòng)畫(huà)增強(qiáng)用戶體驗(yàn)而不是分散注意力。




上一篇:提高網(wǎng)站內(nèi)容安全性的措施有哪些?
下一篇:網(wǎng)站設(shè)計(jì):首頁(yè)要不要“塞滿”?

相關(guān)內(nèi)容:
版權(quán)所有 新疆二域信息技術(shù)有限公司 All Rights Reserved 地址:烏魯木齊市北京南路高新街217號(hào)盈科廣場(chǎng)B座615 備案號(hào):新ICP備14003571號(hào)-6 新公網(wǎng)安備 65010402000050號(hào)