學習CSS3動畫(animation)

来源:http://www.cnblogs.com/BillyQin/archive/2016/09/30/5918169.html
-Advertisement-
Play Games

CSS3就是出了不少高大上的功能,3D效果、動畫、多列等等。今天寫篇文章記錄怎麼一下怎麼用CSS3寫一個動畫。 醜話還得說前頭,IE9以及以下版本不支持CSS3動畫(如真要實現可以考慮用js,不過估計效果也不太好)。chrome和safafi建議加上首碼-webkit-以向前相容老版本。 今天簡單的 ...


  CSS3就是出了不少高大上的功能,3D效果、動畫、多列等等。今天寫篇文章記錄怎麼一下怎麼用CSS3寫一個動畫。

     醜話還得說前頭,IE9以及以下版本不支持CSS3動畫(如真要實現可以考慮用js,不過估計效果也不太好)。chrome和safafi建議加上首碼-webkit-以向前相容老版本。

    今天簡單的做一個動畫。

      首先,先簡單畫一個div,然後添上背景圖片。

<body>
    <div class="demo">
        我是demo
    </div>
</body>
.demo{
    width: 120px;
    height: 120px;
    margin: 100px auto;
    background: url(img/demo.jpg) no-repeat;
}

一個普通的DIV就出來了 如右:

接著我們讓它動起來

先寫一個方法,這個方法描述這個圖片該如何運動

@keyframes run_animation{      
    from {
        transform: rotatez(0deg);
    }
    to {
        transform: rotatez(360deg);
    }
}

這個animation_run就是這個方法的名字。等下需要把名字關聯到相關的元素里。

from是描述動畫的起始狀態,to是動畫的結束狀態。

所以這個方法就是讓一個元素按順時針方向轉動360度,非常簡單。

from to往往不能滿足我們日常開發所需,所以還有這種寫法

@keyframes run_animation{
    0%{
     transform:rotatex(0deg);
   } 16%{ transform: rotatey(-90deg); } 33%{ transform: rotatey(-90deg) rotatez(135deg); } 50%{ transform: rotatey(225deg) rotatez(135deg); } 66%{ transform: rotatey(135deg) rotatex(135deg); } 83%{ transform: rotatex(135deg); }
  100%{
     transform: rotatex(0deg);
  } }

這種描述讓動畫可以有更加豐富炫酷的動作。通過百分比來描述每個階段該元素的動態,0%就是上面說的from,100%就是to。其實這個也很簡單對吧~

動畫就這麼容易的寫好了。接下來我們把動畫關聯到我們的圖片上。

.demo{
    width: 120px;
    height: 120px;
    margin: 100px auto;
    animation: run_animation 12s linear infinite; /*關聯動畫名稱,定義動畫時長,動畫播放速度曲線,播放次數*/
    background: url(img/demo.jpg) no-repeat 100%;
}

就是這麼簡單一句代碼,圖片就能按照我們定義的方法動起來了。

我是demo

要是你現在發現動畫沒有動,那可能是下麵的原因之一:

1.動畫名稱與@keyframes定義的名稱不符;

2.沒有定義動畫播放時長,預設是0S,即不播放動畫。上述代碼定義12S;

3.在IE9及以下瀏覽器運行該代碼,IE9及以下不支持CSS3 animation;

4.動畫方法定義不對,方法定義的每個階段中樣式都是一樣的。像下麵這樣

@keyframes run_animation{
    0%{
        transform: rotatez(90deg);
    }
    50%{
        transform: rotatez(90deg);
    }
   100%{
        transform: rotatez(90deg);
    }
}

好了,這時候動畫應該是動起來了。接著說動畫中別的選項:

1.animation-iteration-count:  動畫播放次數,想播放幾次就寫幾。我這裡用了無限次就是infinite

2.animation-timing-function:動畫速度曲線。這個速度曲線有點複雜,涉及到一個貝塞爾函數。不想深入探索貝塞爾就直接用現成的linear、ease、ease-in、ease-out、ease-in-out。要是你懂貝塞爾,可以用cubic-bezier(n,n,n,n),這個比較高大上,我覺得是裝逼界的利器。

3.animation-delay:動畫可以延時播放,參數也是n S。和animation-duration不一樣,animation-duration是動畫播放時長。

上面幾個屬性都可以簡寫到animation中,就像我上面的慄子一樣。

還有逆向播放、暫停這些屬性就不說了,有需要可以去看http://www.w3school.com.cn/css3/css3_animation.asp或者

https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Animations/Using_CSS_animations

如果還有什麼疑問或者建議,可以多多交流,原創文章,文筆有限,才疏學淺,文中若有不正之處,萬望告知 ending~

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 開發中會經常涉及到文件上傳的需求,根據業務不同的需求,有不同的文件上傳情況。 有簡單的單文件上傳,有多文件上傳,因瀏覽器原生的文件上傳樣式及功能的支持度不算太高,很多時候我們會對樣式進行美化,對功能進行完善。 本文根據一個例子,對多文件的上傳樣式做了一些簡單的美化(其實也沒怎麼美化。。),同時支持選 ...
  • 總喜歡整理一些小的demo,整合成插件,以後就方便用啦! 按鈕的倒計時插件,參數直接給到秒數就好! ...
  • 今天再次遇到了offset***、client***、scroll***的這三類屬性的問題,總是混淆,現歸納總結如下: 大體上來說可以這樣理解: client***屬性(clientWidth、clientHeight): 表示元素可以看到內容的可見區域部分,一般是最後一個對象條以下到狀況欄以上的這 ...
  • × 目錄 [1]尺寸設置 [2]位置設置 前面的話 對於javascript來說,元素尺寸有scroll、offset、client三大屬性,以及一個強大的getBoundingClientRect()方法。而jQuery有著對應的更為簡便的方法。本文將詳細介紹jQuery中的元素尺寸和位置操作 尺 ...
  • 對項目的說明: 前一段時間移動端網站中要求實現一個“內容觸摸滑動”的功能,需求如下: 1. 通過點擊小圖顯示大圖; 2. 再次點擊大圖回到原來的小圖; 3. 圖片能夠滑動切換; 4. 顯示當前圖片的索引(目前我正在瀏覽哪一張圖片)。 自己寫了一些功能,完成了第 1、2 的需求,但是由於 js 基礎較 ...
  • 上圖: 聲明 字元串連接 截取字元串 轉換大小寫 字元串比較 檢索字元串 查找替換字元串 特殊字元 \b : 後退符 \t : 水平製表符 \n : 換行符 \v : 垂直製表符 \f : 分頁符 \r : 回車符 \” : 雙引號 \’ : 單引號 \ 反斜桿 特殊字元 \b : 後退符 \t : ...
  • 本系列主要記錄javascript中,新手比較容易搞錯的地方。 (1)要特別註意相等運算符==。JavaScript在設計時,有兩種比較運算符:第一種是==比較,它會自動轉換數據類型再比較,很多時候,會得到非常詭異的結果;第二種是 比較,它不會自動轉換數據類型,如果數據類型不一致,返回false,如 ...
  • 上圖 ·聲明 ·獲取時間的某部分 ·計算之前和未來的時間 ·計算兩個日期的偏移量 ·檢查有效日期 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...