CSS3動畫

在CSS3中新增了一個很有意思的東西,那就是動畫,有了動畫我們可以做很多的事情,讓我為大家介紹一下動畫吧!
本篇文章關于介紹動畫,利用小球移動為你們介紹一下動畫
默認樣式:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>動畫</title><style>* {margin: 0;padding: 0;}.box {/* 絕對定位,子絕父相 */position: relative;width: 1000px;height: 100px;border: 1px solid black;margin: 100px auto;}.ball {width: 100px;height: 100px;border-radius: 50%;background-color: pink;/* 絕對定位,接下來用定位來實現移動 */position: absolute;top: 0;left: 0;}</style>
</head>
<body><div class="box"><!-- 小球 --><div class="ball"></div></div>
</body>
</html>

在我們使用動畫前,我們需要定義關鍵幀,使用的語法:
@keyframes 名稱 { }

        /* 定義關鍵幀 */@keyframes move {/* 第一種方法,from to *//* from {left:0;}to {left: 900px;} *//* 第二種方法,百分比的形式 *//* 0% {left:0;}100%{left: 900px;} */}

動畫的使用語法與含義:

語法含義
animation-name指定要綁定到選擇器的關鍵幀的名稱
animation-duration動畫指定需要多少秒或毫秒完成
animation-timing-function設置動畫將如何完成一個周期
animation-delay設置動畫在啟動前的延遲間隔
animation-iteration-count定義動畫的播放次數
animation-direction指定是否應該輪流反向播放動畫
animation-fill-mode規定當動畫不播放時(當動畫完成時,或當動畫有一個延遲未開始播放時),要應用到元素的樣式
animation-play-state指定動畫是否正在運行或已暫停

使用動畫讓小球動起來

        /* 給小球定義關鍵幀 */@keyframes move {0% {left:0;}100%{left: 900px;}}

跟著這一步步來自己動手試試吧,看只能看的懂理論,還是得要實踐

一、animation-name

我們把名稱給到我們小球的選擇器當中

animation-name: move;

定義了動畫名稱還是做不出效果的所以我們用到了animation-duration

二、 animation-duration

動畫指定需要多少秒或毫秒完成
單位使用s(秒)

animation-duration: 2s;

請添加圖片描述

這樣我們的小球就移動起來了,不過會有一個問題,但我們打開頁面或者刷新頁面的時候,動畫就已經執行起來了,會閃現一段路程,所以我們要使用到延遲時間animation-delay

三、animation-delay

我們給小球添加延遲時間

/* 延遲2秒開始,單位用s */
animation-delay: 2s;

請添加圖片描述

這樣就解決了當我們頁面還沒加載完就開始執行了動畫

四、animation-timing-function

是不是在嘗試的過程中感覺小球滾動的速度有點奇特,一下慢一下快又一下慢的,這是animation-timing-function的屬性值導致的,默認值是ease

屬性值簡述
ease 默認動畫以低速開始,然后加快,在結束前變慢
ease-in動畫以低速開始
ease-out動畫以低速結束
ease-in-out動畫以低速開始和結束
linear(常用)動畫從頭到尾的速度是相同的(勻速)
steps指定了時間函數中的間隔數量( 步長 )

演示效果:
請添加圖片描述

我們把小球的速度改成勻速

animation-timing-function: linear;

請添加圖片描述

五、animation-iteration-count

定義動畫播放的次數
可以使用number數字
我們想讓動畫執行2次

animation-iteration-count: 2;

在這當中我們有一個十分常用的屬性
infinite(無限的)
這個屬性可以反復執行動畫

animation-iteration-count: infinite;

六、animation-direction

動畫播放的方向

屬性值簡述
normal 默認值動畫按正常播放
reverse動畫反向播放
alternate動畫在奇數次(1、3、5…)正向播放,在偶數次(2、4、6…)反向播放
alternate-reverse動畫在奇數次(1、3、5…)反向播放,在偶數次(2、4、6…)正向播放

在使用alternate與alternate-reverse之前,我們需要讓動畫無限的播放或者是播放2次以上

animation-direction:alternate;

請添加圖片描述

七、animation-fill-mode

屬性簡述
backwards動畫執行完畢后回到最初的位置
forwards動畫執行完畢后停在最后一幀不動
animation-fill-mode: forwards;

請添加圖片描述

八、animation-play-state

指定動畫是否正在運行或已暫停
我用:hover為大家演示一下,不和其他屬性一樣寫在一起

.ball:hover {animation-play-state: paused;
}

注意看鼠標
請添加圖片描述

代碼總結:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>動畫</title><style>* {margin: 0;padding: 0;}.box {/* 絕對定位,子絕父相 */position: relative;width: 1000px;height: 100px;border: 1px solid black;margin: 100px auto;}.ball {/* 絕對定位,接下來用定位來實現移動 */position: absolute;top: 0;left: 0;width: 100px;height: 100px;border-radius: 50%;background-color: pink;/* 動畫名稱 */animation-name: move;/* 所需時間 */animation-duration: 2s;/* 延遲時間 */animation-delay: 2s;/* 運動曲線 */animation-timing-function: linear;/* 定義動畫播放的次數 */animation-iteration-count: infinite;/* 動畫播放方向 *//* animation-direction:alternate; *//* 最后一幀停止不動 *//* animation-fill-mode: forwards; */}/* 鼠標經過小球停止,移出繼續動 */.ball:hover {animation-play-state: paused;}/* 給小球定義關鍵幀 */@keyframes move {0% {left: 0;}100% {left: 900px;}}</style>
</head>
<body><div class="box"><!-- 小球 --><div class="ball"></div></div>
</body>
</html>

九、復合屬性(常用)

我們可以直接使用animation
animation: 動畫的名稱 時間 運動曲線 開始時間 播放次數 是否反向播放 是否運用結束的樣式 動畫是否運行或暫停;

復合屬性簡寫:

/* 要使用到forwards需要不無限循環 */
animation: move 2s 2s linear infinite alternate;

感謝大家的閱讀,本人文筆有限,如有錯誤的地方,可以向我指出,感謝大家!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/164572.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/164572.shtml
英文地址,請注明出處:http://en.pswp.cn/news/164572.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

普通話考試相關(一文讀懂)

文章目錄&#xff1a; 一&#xff1a;相關常識 1.考試報名時間 2.報名地方 費用 證件 3.考試流程 4.普通話等級說明 二&#xff1a;題型 三&#xff1a;技巧 1.前三題 2.命題說話 四&#xff1a;普通話考試題庫 1.在線題庫 2.下載題庫 一&#xff1a;相關常識 …

JavaEE(SpringMVC)期末復習

文章目錄 JavaEE期末復習一、單選題&#xff1a; JavaEE期末復習 一、單選題&#xff1a; 1.Spring的核?技術是&#xff08; A &#xff09;&#xff1f; A依賴注入 B.JdbcTmplate C.聲明式事務 D.資源訪問 Spring的核心技術包括依賴注入&#xff08;Dependency Injection&am…

【前端】js通過canvas獲取瀏覽器的唯一指紋可以當做唯一標識

【前端】js通過canvas獲取瀏覽器的唯一指紋可以當做唯一標識 <!DOCTYPE html> <html><head> <meta charset"utf-8" /> <meta name"viewport" content"widthdevice-width" /> <title>JS Bin</title> &…

解決Emmy Lua插件在IDEA或 Reder 沒有代碼提示的問題(設置文件關聯 增加對.lua.txt文件的支持)

目錄 Reder版本2019.x Reder版本2021.1.5x Reder版本2019.x 解決Emmy Lua插件在IDEA或 Reder 沒有代碼提示的問題(設置文件關聯 增加對.lua.txt文件的支持) Reder版本2021.1.5x 解決Emmy Lua插件在IDEA或 Reder 沒有代碼提示的問題(設置文件關聯 增加對.lua.txt文件的支持)…

java游戲制作-王者榮耀游戲

一.準備工作 首先創建一個新的Java項目命名為“王者榮耀”&#xff0c;并在src下創建兩個包分別命名為“com.sxt"、”com.stx.beast",在相應的包中創建所需的類。 創建一個名為“img”的文件夾來儲存所需的圖片素材。 二.代碼呈現 package com.sxt;import javax.sw…

Netty Review - 探索ByteBuf的內部機制

文章目錄 概念ByteBuf VS Java NIO BufferByteBuf實現類HeapByteBuf vs DirectByteBufPooledByteBuf vs UnpooledByteBuf其他 ByteBuf的實現機制 概念 ByteBuf是Netty中用于處理二進制數據的緩沖區 Netty的ByteBuf是一個可用于高效存儲和操作字節數據的數據結構。與傳統的Byt…

跳躍游戲[中等]

優質博文&#xff1a;IT-BLOG-CN 一、題目 給你一個非負整數數組nums&#xff0c;你最初位于數組的第一個下標 。數組中的每個元素代表你在該位置可以跳躍的最大長度。判斷你是否能夠到達最后一個下標&#xff0c;如果可以&#xff0c;返回true&#xff1b;否則&#xff0c;返…

阿里入局鴻蒙!鴻蒙原生應用再添兩員新丁

今日HarmonyOS微博稱&#xff0c;阿里釘釘、螞蟻集團旗下的移動開發平臺mPaaS與華為達成合作&#xff0c;宣布啟動鴻蒙原生應用的開發&#xff01;相關應用將以原生方式適配#HarmonyOS NEXT#系統。 #HarmonyOS#市場或迎來爆發式增長&#xff01; 阿里釘釘 阿里釘釘與華為達成合…

Android 匿名內存深入分析

Android 匿名內存解析 有了binder機制為什么還需要匿名內存來實現IPC呢&#xff1f;我覺得很大的原因就是binder傳輸是有大小限制的&#xff0c;不說應用層的限制。在驅動中binder的傳輸大小被限制在了4M&#xff0c;分享一張圖片可能就超過了這個限制。匿名內存的主要解決思路…

黑馬點評-10實現用戶點贊和點贊排行榜功能

用戶點贊功能 如果用戶只要點贊一次就對數據庫中blog表中的liked字段的值加1就會導致一個用戶無限點贊 PutMapping("/like/{id}") public Result likeBlog(PathVariable("id") Long id) {// 修改點贊數量,update tb_blog set liked liked 1 where id …

編譯器核心技術概覽

編譯技術是一門龐大的學科&#xff0c;我們無法對其做完善的講解。但不同用途的編譯器或編譯技術的難度可能相差很大&#xff0c;對知識的掌握要求也會相差很多。如果你要實現諸如 C、JavaScript 這類通用用途語言&#xff08;general purpose language&#xff09;&#xff0c…

buck降壓電路

一、Buck電路的拓撲結構 Buck是直流轉直流的降壓電路,下面是拓撲結構,作為硬件工程師,這個最好是能夠記下來,了然于胸。 為啥要記下來,自然是因為這個電路太基礎了,并且誰都會用到,更重要的一點,面試可能會考。。。 上圖是個異步buck,同步buck就是將里面的二極管換成M…

3D火山圖繪制教程

一邊學習&#xff0c;一邊總結&#xff0c;一邊分享&#xff01; 本期教程內容 **注&#xff1a;**本教程詳細內容 Volcano3D繪制3D火山圖 一、前言 火山圖是做差異分析中最常用到的圖形&#xff0c;在前面的推文中&#xff0c;我們也推出了好幾期火山圖的繪制教程&#xff0…

Android——資源IDnonFinalResIds和“Attribute value must be constant”錯誤

一、異常描述 通過資源ID引用資源提示錯誤 Attribute value must be constant 二、解決方案 在根目錄下的文件 gradle.properties 中添加如下配置&#xff0c;然后Sync Project android.nonFinalResIdsfalse 三、問題原因 android.nonFinalResIds 是Android開發中一個用于解…

此處不允許使用特性namespace

1.DOCTYPE 后面改成 mapper 2.PUBLIC一行中的Config改為Mapper 3.將下一行config變為小寫的mapper <?xml version"1.0" encoding"UTF-8" ?> <!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.or…

交叉編譯安裝時報錯 ./install.sh: 15: ./install.sh: Bad substitution

報錯信息截圖如下&#xff1a; 解決方法 vim install.sh #!/bin/sh -e 修改為 !/bin/bash -e重新執行 sudo ./install.sh 成功運行

【Java并發】聊聊線程池原理以及實際應用

線程其實對于操作系統來說是寶貴的資源&#xff0c;java層面的線程其實本質還是依賴于操作系統內核的線程進行處理任務&#xff0c;如果頻繁的創建、使用、銷毀線程&#xff0c;那么勢必會非常浪費資源以及性能不高&#xff0c;所以池化技術&#xff08;數據庫連接池、線程池&a…

暢談Linux在小型微型企業中的應用

在這篇文章里我們討論和暢談一下linux系統在小微型企業中的應用&#xff0c;為什么會寫這篇文章呢&#xff1f;因為在平時的工作中&#xff0c;認識的一些做小微型企業的朋友&#xff0c;他們經常找我咨詢或是去解決一些平時工作中的IT相關的問題&#xff0c;那么小微型企業中的…

相同結構體不同類型轉換

緣由&#xff1a; 最近開發上遇到一個問題&#xff0c;通過grpcgateway 處理后的int64&uint64類型數據均轉換成了字符串類型&#xff0c;本身服務于前端&#xff0c;沒有任何問題。但是 項目部署現場后&#xff0c;發現需要兩套環境&#xff0c;那么就出現一個問題&#x…

2022 年十大 JavaScript 框架

2022 年十大 Web 應用開發 JavaScript 框架。 React.js jQuery Express Angular Vue.js Angular.js Svelte Next.js Ember.js Meteor React.js React.js 于 2013 年由 Meta(Facebook 前身) 推出&#xff0c;是一款開源的、免費的 JavaScript 庫。React.js 被用于開…