国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

css過度與動畫

Kross / 3631人閱讀

摘要:綜上,上面的代碼的值都應(yīng)該加上,即逐幀動畫在實現(xiàn)一個卡通影片或者一個復(fù)雜的進(jìn)度指示框,或者的標(biāo)志時這種場景比較適應(yīng)逐幀動畫。這種平滑特性不適用于逐幀動畫的實現(xiàn)。

緩動效果

回彈動畫效果是比較常見的動畫,比如小球的運(yùn)動、對于尺寸變化和角度變化使用回彈效果可以增強(qiáng)動畫的體驗。小面介紹一些簡單的緩動效果的動畫。

彈跳動畫的實現(xiàn)

css中所有過渡和動畫都是跟一條曲線(緩動曲線)有關(guān)的,這條曲線指定了動畫過程在整段時間中是如何推進(jìn)的。

在animationtiming-function/transition-timing-function 展開式屬性中,都可以把這個默認(rèn)的調(diào)速函數(shù)顯式指定為ease 關(guān)鍵字。ease也是默認(rèn)值,四種指定的緩動曲線值分別是ease、ease-in、ease-out(是ease-in 是反向版本)、ease-in-out、linear,四種的緩動曲線分別如下圖所示:

使用ease-in和ease-out這對相反的版本可以實現(xiàn)回彈的效果
如小球的回彈效果可以這樣實現(xiàn):

</>復(fù)制代碼

  1. @keyframes bounce {
  2. 60%, 80%, to {
  3. transform: translateY(400px);
  4. animation-timing-function: ease;
  5. }
  6. 70% {
  7. transform: translateY(300px);
  8. }
  9. 90% {
  10. transform: translateY(360px);
  11. }
  12. }
  13. .ball {
  14. width: 50px;
  15. height: 50px;
  16. border-radius: 50px;
  17. background: yellow;
  18. animation: bounce 3s ease-in;
  19. }

CSS 的調(diào)速函數(shù)都是只有一個片斷的貝塞爾曲線,因此每個調(diào)速函數(shù)只有兩個控制錨點(diǎn)。同時CSS 提供了一個cubic-bezier(x1, y1, x2, y2)函數(shù),允許我們指定自定義的調(diào)速函數(shù)。它接受四個參數(shù),分別代表兩個控制錨點(diǎn)的坐標(biāo)值,如果想得到任何調(diào)速函數(shù)的反向版本,只要把控制錨點(diǎn)的水平坐標(biāo)和垂直坐標(biāo)互換就可以。

把上面的ball的animation,設(shè)置成 bounce 3s cubic-bezier(.1,.25,1,.25);會使回彈效果更真實。

一個好用的貝塞尓可視化的工具

彈性過渡

彈性過渡的應(yīng)用場景比如說是一個input框,用戶輸入的時候給予一個提示框,可以應(yīng)用上面的cubic-bezier實現(xiàn)

</>復(fù)制代碼

  1. Your username:
  2. Only letters, numbers,
  3. underscores (_) and hyphens (-) allowed!

</>復(fù)制代碼

  1. input:not(:focus) + .callout1 {
  2. transform: scale(0);
  3. transition: .25s;
  4. }
  5. .callout1 {
  6. /* cubic-bezier(.5s * 50%, .1, .5 * 60%, 1.5) */
  7. transition: .5s cubic-bezier(.25, .1, .3, 1.5);
  8. transform-origin: 1.4em -.4em;
  9. /* CSS transform 屬性 , 只對 block 級元素生效*/
  10. display: block;
  11. width: 250px;
  12. height: 40px;
  13. font-size: 12px;
  14. border: 1px solid #eee;
  15. margin-top: 5px;
  16. }

實現(xiàn)效果

在使用transition進(jìn)行過渡時,在不指定transition-property屬性時,它會自動讀取它的初始值all,這時所有能做過渡的屬性都會參與過渡,比如color。所以在設(shè)置過渡時,要把過渡的作用范圍限制在某幾種特定的屬性上。

綜上,上面的代碼transition的值都應(yīng)該加上transform,即

</>復(fù)制代碼

  1. input:not(:focus) + .callout {
  2. transform: scale(0);
  3. transition: .25s transform;
  4. }
  5. .callout {
  6. transform-origin: 1.4em -.4em;
  7. transition: .5s cubic-bezier(.25,.1,.3,1.5) transform;
  8. }
逐幀動畫

在實現(xiàn)一個卡通影片或者一個復(fù)雜的進(jìn)度指示框,或者loading的標(biāo)志時這種場景比較適應(yīng)逐幀動畫。

在實現(xiàn)loading動畫時也是可以使用gif動畫的,但是gif動畫是有一些自己的缺點(diǎn)的:

GIF 圖片的所能使用的顏色數(shù)量被限制在 256 色

GIF 不具備 Alpha 透明的特性。

修改動畫的參數(shù)不方便,需要重新編輯生成。

在css中可以使用step這個函數(shù)實現(xiàn)。
所有基于貝塞爾曲線的調(diào)速函數(shù)都會在關(guān)鍵幀之間進(jìn)行插值運(yùn)算,從而產(chǎn)生平滑的過渡效果。這種平滑特性不適用于逐幀動畫的實現(xiàn)。

steps() 會根據(jù)你指定的步進(jìn)數(shù)量,把整個動畫切分為多幀,而且整個動畫會在幀與幀之間硬切,不會做任何插值處理。這種loading的實現(xiàn)正適用于這種

具體實現(xiàn)如下:

</>復(fù)制代碼

  1. Loading...

</>復(fù)制代碼

  1. @keyframes loader {
  2. to { background-position: -800px 0; }
  3. }
  4. .loader {
  5. width: 100px;
  6. height: 100px;
  7. background: url(img/loader.png) 0 0;
  8. animation: loader 1s infinite steps(8);
  9. /* 把文本隱藏起來 */
  10. text-indent: 200%;
  11. white-space: nowrap;
  12. overflow: hidden;
  13. }

loader.png 是一個將所有 loading 狀態(tài)拼接好的 png 圖片

閃爍效果的實現(xiàn)

以前的blink標(biāo)簽可以用來實現(xiàn)文字的閃爍效果,現(xiàn)在沒有了,現(xiàn)在可以通過animation創(chuàng)建的動畫實現(xiàn)

</>復(fù)制代碼

  1. @keyframes blink {
  2. 50% {
  3. color: transparent
  4. }
  5. }
  6. .highlight {
  7. animation: 1s blink 3 steps(1);
  8. }
打字動畫的實現(xiàn)

實現(xiàn)思路就是讓容器的寬度成為動畫的主體,把所有文本包裹在這個容器中,然后讓它的寬度從0 開始以步進(jìn)動畫的方式、一個字一個字地擴(kuò)張到它應(yīng)有的寬度。只適用于單行的文本

實現(xiàn)中將使用ch這個單位,它表示0字符的寬度,很少用到,但對于等寬字體來說,“0”字符的寬度和其他所有字形的寬度是一樣的。假設(shè)我們要實現(xiàn)的文本是等寬字體。

</>復(fù)制代碼

  1. CSS is awesome!

</>復(fù)制代碼

  1. @keyframes typing {
  2. from {
  3. width: 0
  4. }
  5. }
  6. /* 閃爍的光標(biāo)的實現(xiàn) */
  7. @keyframes caret {
  8. 50% {
  9. /* currentColor使邊框顏色自動與文字顏色保持一致 */
  10. border-color: currentColor;
  11. }
  12. }
  13. .code {
  14. width: 15ch; /* 文本的寬度 */
  15. animation: typing 6s steps(15),
  16. caret 1s steps(1) infinite;
  17. white-space: nowrap;
  18. border-right: .05em solid transparent;
  19. overflow: hidden;
  20. }

效果:

狀態(tài)平滑的動畫

應(yīng)用場景是在一張圖片很長,展示的位置又很有限,這時候做成動畫是再好不過的,在鼠標(biāo)hover或者focus的觸發(fā)動畫的發(fā)生。但是當(dāng)動畫開始播放還沒結(jié)束的時候,鼠標(biāo)離開時,動畫就會特別生硬的回到圖片的最開始的位置上,解決的辦法就是使用animation-play-state這個屬性

</>復(fù)制代碼

  1. @keyframes panoramic {
  2. to {
  3. background-position: 100% 0;
  4. }
  5. }
  6. .panoramic {
  7. width: 150px;
  8. height: 150px;
  9. background: url("timg.jpeg");
  10. background-size: auto 100%;
  11. animation: panoramic 10s linear infinite alternate;
  12. animation-play-state: paused;
  13. }
  14. .panoramic:hover, .panoramic:focus {
  15. animation-play-state: running;
  16. }

效果:

沿環(huán)形路徑平移的動畫

通過設(shè)置旋轉(zhuǎn)的動畫達(dá)到效果,但是會存在一個問題旋轉(zhuǎn)的時候圖片自身也會一起旋轉(zhuǎn),解決這個問題有兩種方法:

(1)需要兩個元素的解決方案
思路就是給元素設(shè)置另一個旋轉(zhuǎn)動畫,讓它以相反的方向自轉(zhuǎn)一周,這樣旋轉(zhuǎn)的時候圖片自身就不會跟著旋轉(zhuǎn)

</>復(fù)制代碼

</>復(fù)制代碼

  1. @keyframes spin {
  2. to {
  3. transform: rotate(1turn);
  4. }
  5. }
  6. .path .avatar {
  7. animation: spin 10s infinite linear;
  8. transform-origin: 50% 150px; /* 150px = 路徑的半徑 */
  9. }
  10. .path .avatar > img {
  11. width: 50px;
  12. height: 50px;
  13. border-radius: 25px;
  14. position: absolute;
  15. left: 120px;
  16. top: 10px;
  17. animation: inherit;
  18. /* reverse 得到原始動畫的反向版本 */
  19. animation-direction: reverse;
  20. }

效果如下:

(2) 單個元素的解決方案
每個transform-origin 都是可以被兩個translate() 模擬出來的。
例如

</>復(fù)制代碼

  1. transform: rotate(30deg);
  2. transform-origin: 200px 300px;
  3. transform: translate(200px, 300px)
  4. rotate(30deg)
  5. translate(-200px, -300px);
  6. transform-origin: 0 0;
  7. /* 以上兩段代碼等價 */

應(yīng)用translate變形函數(shù)并不是彼此獨(dú)立的,每個變形函數(shù)并不是只對這個元素進(jìn)行變形,而且會把整個元素的坐標(biāo)系統(tǒng)進(jìn)行變形,從而影響所有后續(xù)的變形操作。這也說明了為什么變形函數(shù)的順序是很重要的,變形屬性中不同函數(shù)的順序如果被打亂,可能會產(chǎn)生完全不同的結(jié)果。

通過translate的方式就可以只用一層dom

</>復(fù)制代碼

  1. @keyframes spin {
  2. from {
  3. transform: rotate(0turn) translateY(-150px) translateY(50%) rotate(1turn);
  4. }
  5. to {
  6. transform: rotate(1turn) translateY(-150px) translateY(50%) rotate(0turn);
  7. }
  8. }
  9. .avatar {
  10. animation: spin 3s infinite linear;
  11. }

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/112015.html

相關(guān)文章

  • vue過度動畫的使用方法整理

    摘要:事件有效六個過度類名簡單地說就是會伴隨的整個過程,與存在的時長只都有一幀,所以用肉眼看與幾乎是同時出現(xiàn),同時消失的。未觸發(fā)效果觸發(fā)效果,因為所以在他之后的都上移位置發(fā)生改變未觸發(fā)效果,過度開始時改變位置才有效 transition props name: - string,用于自動生成 CSS 過渡類名。例如:name: fade 將自動拓展為.fade-enter,.fade-en...

    xiaolinbang 評論0 收藏0
  • Vue.js進(jìn)入/離開&列表過度動畫

    摘要:包括以下工具在過渡和動畫中自動應(yīng)用可以配合第三方動畫庫,如在過渡鉤子函數(shù)中使用直接操作可以配合使用第三方動畫庫,如在這里,我們只會講到進(jìn)入離開和列表的過渡。不僅可以進(jìn)入和離開動畫,還可以改變定位。 概述 Vue在插入、更新或則移除DOM時,提供多種不同方式的應(yīng)用過渡效果。包括以下工具: *在CSS過渡和動畫中自動應(yīng)用class *可以配合第三方CSS動畫庫,如Animate.css *...

    thekingisalwaysluc 評論0 收藏0
  • 慕課網(wǎng) 餓了么 vue2.0 項目

    餓了么 vue 項目總結(jié) 項目效果預(yù)覽 ele效果預(yù)覽項目源碼地址 ele源碼跟著慕課網(wǎng)黃軼老師 敲餓了么 vue 項目 作者項目源代碼地址 項目完成之后 npm run build 這本來是寫在最后面一段的,我現(xiàn)在把他寫在了最前面,方便我們事先知道,整個項目做完之后是什么樣子的 項目完成之后在 根目錄 下 npm run build (就是 npm run dev 的那個目錄) 會在根目錄...

    xuexiangjys 評論0 收藏0
  • 關(guān)于CSS Transition,你需要知道的事

    摘要:在這片文章中,我將會專研的過渡中更加復(fù)雜的部分,從鏈?zhǔn)胶褪录接布铀俸蛣赢嫼瘮?shù)。只有當(dāng)需要的時候,你才應(yīng)該用硬件加速,并且完全不需要在每個元素上都使用它。此外,不同的瀏覽器用不同的硬件加速的庫,這可能會造成跨瀏覽器問題。 CSS3的過渡屬性,給web應(yīng)用帶來了簡單優(yōu)雅的動畫,但是比起初次相見,他(transition)有許多細(xì)則。 在這片文章中,我將會專研CSS3的過渡(transi...

    Joyven 評論0 收藏0
  • 關(guān)于CSS Transition,你需要知道的事

    摘要:在這片文章中,我將會專研的過渡中更加復(fù)雜的部分,從鏈?zhǔn)胶褪录接布铀俸蛣赢嫼瘮?shù)。只有當(dāng)需要的時候,你才應(yīng)該用硬件加速,并且完全不需要在每個元素上都使用它。此外,不同的瀏覽器用不同的硬件加速的庫,這可能會造成跨瀏覽器問題。 CSS3的過渡屬性,給web應(yīng)用帶來了簡單優(yōu)雅的動畫,但是比起初次相見,他(transition)有許多細(xì)則。 在這片文章中,我將會專研CSS3的過渡(transi...

    taowen 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<