整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          平滑升級!一文掌握CSS過渡與動畫屬性,讓你的網頁動

          平滑升級!一文掌握CSS過渡與動畫屬性,讓你的網頁動起來!

          這里是云端源想IT,幫你輕松學IT”

          嗨~ 今天的你過得還好嗎?

          找一顆屬于你自己的星星吧

          它會給你指引方向

          一直到天明

          - 2024.04.12 -

          在網頁設計中,動畫效果是吸引用戶眼球的重要手段。CSS動畫中的過渡屬性(transition)和動畫(animation)屬性,就像是設計師手中的魔法棒,可以讓元素在頁面上動起來,增加視覺吸引力,提升用戶體驗。

          今天,我們就來揭秘這兩個神奇的屬性,看看它們是如何讓網頁變得生動活潑的。



          一、過渡屬性(transition)

          過渡屬性是CSS中的一種基本動畫效果,它可以讓元素的某個屬性在一定的時間內平滑地從一個值變化到另一個值。這種變化可以是顏色、大小、位置等任何可以改變的屬性。


          屬性值

          1、transition-property:指定要執行過渡的屬性

          • 多個屬性間使用,隔開;
          • 如果所有屬性都需要過渡,則使用all關鍵字;
          • 大部分屬性都支持過渡效果;
          • 注意過渡時必須是從一個有效數值向另外一個有效數值進行過渡;


          2、transition-duration:指定過渡效果的持續時間

          • 時間單位:s 和 ms(1s=1000ms)


          3、transition-delay:過渡效果的延遲,等待一段時間后在執行過渡


          4、transition-timing-function:過渡的時序函數

          • linear勻速運動
          transition-timing-function: linear;
          • ease 默認值,慢速開始,先加速后減速
          transition-timing-function: ease;
          • ease-in 加速運動
          transition-timing-function: ease-in;
          • ease-out 減速運動
          transition-timing-function: ease-out;
          • ease-in-out 先加速后減速
          transition-timing-function: ease-in-out;
          • cubic-bezier()來指定時序函數
          transition-timing-function: cubic-bezier(0.17, 1.79, 0.68, -0.69);
          • steps()分步執行過渡效果,可以設置第二個值:

          end,在時間結束時執行過渡(默認值);start,在時間開始時執行過渡

          /* transition-timing-function: steps(2, end); */
          transition-timing-function: steps(2);
          transition-timing-function: steps(2, start);

          5、transition:可以同時設置過渡相關的所有屬性

          只有一個要求,如果要寫延遲,則兩個時間中第一個是持續時間,第二個是延遲時間。


          示例:

          /* transition: margin-left 2s 1s; */
          transition-property: margin-left;
          transition-duration: 2s;
          transition-delay: 1s;

          CSS中的animation屬性是一個功能強大的工具,它允許開發者通過純CSS的方式創建豐富的動畫效果,從而增強網頁的交互性和視覺吸引力。


          二、動畫(animation)屬性

          動畫(animation)是CSS中的另一種屬性,它比過渡更強大,可以創建更復雜的動畫效果。動畫允許我們定義關鍵幀,然后在這些關鍵幀之間創建平滑的過渡。


          這意味著,我們可以讓元素在一段時間內完成一系列的樣式變化,從而創建出更豐富、更生動的動畫效果。



          設置動畫效果,必須先要設置一個關鍵幀,關鍵幀設置了動畫執行每一個步驟

          @keyframes test {
          from {
          margin-left: 0;
          }
          
          to {
          margin-left: 900px;
          }
          }


          屬性值:

          1、animation-name:此屬性指定要綁定到選擇器的關鍵幀名稱。關鍵幀是定義動畫序列的地方,通過@keyframes規則創建。


          2、animation-duration:定義動畫完成一個周期所需的時間長度,可以設置成秒(s)或毫秒(ms)。必須明確指定該屬性,因為默認值是0,如果設置為0,則動畫不會播放。


          3、animation-timing-function:指定動畫如何完成一個周期的時間曲線,例如線性、緩動等。這決定了動畫的速度在整個周期內是如何變化的。


          4、animation-delay:設定動畫在開始前延遲的時間,同樣可設置單位為秒或毫秒。可以用來延遲動畫的開始時間。



          5、animation-iteration-count:確定動畫循環播放的次數,可以是特定的數字或者infinite表示無限循環。

          • infinite 無限執行


          6、animation-direction:規定動畫在每次循環時是否反向播放,常用的值有normal(正常)和alternate(交替)。

          • normal 從from向to運行,每次都是這樣,默認值
          • reverse 從to向from運行,每次都是這樣
          • alternate 從from向to運行,重復執行動畫時反向執行
          • alternate-reverse 從to向from運行,重復執行動畫時反向執行

          想要快速入門前端開發嗎?推薦一個前端開發基礎課程,這個老師講的特別好,零基礎學習無壓力,知識點結合代碼,邊學邊練,可以免費試看試學,還有各種輔助工具和資料,非常適合新手!點這里前往學習哦!云端源想

          7、animation-fill-mode:定義動畫在開始前和結束后的狀態,比如可見或隱藏。

          • none 動畫執行完畢,元素回到原來位置,默認值
          • forwards 動畫執行完畢,元素會停止在動畫結束的位置
          • backwards 動畫延時等待時,元素就會處于開始位置
          • both 結合了forwards和backwards



          8、animation-play-state:控制動畫是否正在運行或暫停,常見的值有running(運行)和paused(暫停)。


          此外,在使用animation屬性時,至少需要指定兩個屬性:動畫的名稱和動畫的持續時間。其他屬性可以根據需要選擇性地設置,以達到預期的動畫效果。


          示例

          /* animation-name: test;
          animation-duration: 2s;
          animation-delay: 2s;
          animation-timing-function: linear;
          animation-iteration-count: infinite;
          animation-direction: alternate;
          animation-fill-mode: both; */
          
          animation: test 2s 2s linear infinite alternate both;

          總結來說,CSS的animation屬性提供了一種在不使用JavaScript的情況下,通過純CSS實現網頁元素動畫的方式。它能夠使元素從一種樣式平滑過渡到另一種樣式,增強用戶的視覺體驗。


          通過這篇文章,我們了解了CSS動畫中的過渡屬性和動畫屬性的基本概念和應用。它們可以幫助我們創建出各種吸引人的動畫效果,讓我們的網頁更加生動有趣。


          記住,好的動畫效果應該是恰到好處的,過多的動畫可能會讓用戶感到困擾。所以,讓我們一起用好這兩個屬性,創造出更好的用戶體驗吧!



          我們下期再見!

          END

          文案編輯|云端學長

          文案配圖|云端學長

          內容由:云端源想分享

          周在給學生講授JavaScript課程中setInterval方法時,想到了我們在網上看到的各類GIF動圖比較有意思,就將其引入到教學中,教學內容設計如果通過HTML5與JavaScript實現網頁類似GIF效果的動態圖。于是在網上搜集了部分gif格式動圖,將每一個Gif動圖分解為一組jpg格式圖片,再采用setInterval與html5 Canvas進行動畫的實現。通過學習可以讓學生進一步了解canvas動畫實現的過程與原理。并將其發布到頭條,也希望對有興趣的初學者了解HTML5 Canvas等有所幫助。圖片分組圖片素材如下:

          素材一

          實現動畫的素材我們已經給出,主要通過gif動圖導出一組圖片,下面對html5動畫實現過程進行簡單說明。


          基本思路

          實現其動畫的基本思路是通過HTML5提供的canvas元素進行圖片的繪制與展示,借助setInterval方法實現間隔指定時間調用新的圖片實現重新繪圖。其中繪圖主要使用drawImage方法進行繪圖,最終通過圖片依次重繪實現動畫效果。具體實現過程如下:

          HTML5 Canvas設置

          在頁面body部分添加Canva標簽,設置其id屬性為canv,寬度為600,高度為400,編寫代碼描述如下圖:

          添加畫布元素

          canvas瀏覽效果

          加載圖片資源

          使用Canvas借助JavaScript提供的drawImage方法進行繪圖,需要提供要繪制的圖片資源即繪圖的坐標位置。該方法原型如下:

          drawImage方法原型

          因此我們需要加載圖片資源,本例由于需要調用多個img實現定時不同圖片的繪制,因此我們可以使用數組存儲所加載的圖片資源。本例圖片數量為14,因此我們數組長度為14。使用素組存儲圖片實現代碼如下:

          加載圖片資源代碼

          定義頁面加載事件onload

          本例設計在頁面加載時自動播放動畫,因此需要在JavaScript腳本中添加頁面onload事件,在事件中編寫繪圖相關代碼,主要代碼包括獲取畫布canva與實例化繪圖對象context。部分代碼描述如下:

          onload事件及繪圖初始化

          使用setInterval實現動畫

          使用setInterval方法實現動畫主要需要定義回調函數與回調函數觸發執行的周期,本例中我們使用匿名函數作為回調函數,觸發周期設置為100毫秒。setInterval函數定義如下:

          setInterval函數

          在定義完函數之后可在其匿名函數函數體部分寫入繪圖方法dramImage(),實現周期調用不同圖片資源進行繪圖,最終展示出動畫效果。為了保證循環調用14張圖片,我們需要設置一計數全局變量i,由于我們圖片采用數組存儲,下標為數組,且從0-13進行編號,因此當計數值小于13時自動+1,指向下一數組下標,當為13時,設置計數值為0,回到數組第一元素,最終實現數組訪問下標的循環。setInterval實現完整代碼如下:

          setInterval完整代碼

          實現效果展示


          HTML動畫效果展示


          本頭條號長期關注編程資訊分享;編程課程、素材、代碼分享及編程培訓。如果您對以上方面有興趣或代碼錯誤、建議與意見,可以聯系作者,共同探討。期待大家關注!如需案例完整代碼請關注并私信,往期前端設計文章鏈接如下:

          1. 前端設計-JavaScript中的值、引用傳遞與垃圾回收
          2. 前端設計-JavaScript美女拼圖游戲開發實例
          3. 前端設計- JavaScript驗證碼制作及實例分析
          4. 前端設計-Ajax技術及實例展示
          5. 前端設計-響應式頁面開發基礎
          6. Web開發前端、后端與全棧的區別是什么?

          們經常看到許多網站或者H5的動畫都做成了整屏切換的形式,為提高用戶體驗,會在首屏頁面下方放上一個動態的向下箭頭來提示用戶切換至下一屏。

          動態箭頭的效果圖如下:

          那么這種效果是如何實現的呢?

          其實非常簡單,在CSS3中提供了animation屬性,專門用于動畫。要使用這個屬性,需要先了解@keyframes的創建規則,在 @keyframes 中規定某項 CSS 樣式,就能創建由當前樣式逐漸改為新樣式的動畫效果。

          在這個動畫中,我們能夠看出在整個動畫中改變的是箭頭的位置,所以我們在創建動畫時,只需要給定箭頭的起始位置,利用animation讓他動起來就可以了。

          接下來,我們一步一步完成。

          1、首先找到你所需要的箭頭圖片,將他利用定位的方式放在首屏的底部。

          a)html代碼(將圖片以背景或者插入圖片的形式放入標簽內,demo以背景形式展示)

          b)css代碼(利用定位將箭頭放在首屏的底部適當位置,網站中大部分情況會進行左右居中)

          2、然后進行動畫創建,最簡單的方式就是只給定初始的以及結束的css樣式即可。

          css 代碼

          標注出來的為動畫的自定義名稱,可以根據你的動畫行為來定義。

          0%為初始狀態,即剛開始動畫時。

          100%為結束狀態,即動畫進行到100%時。

          動畫改變了箭頭的底部位置,由距離底部80像素變到了距離底部0像素。

          3、接下來利用animation屬性讓他具有動畫效果

          css代碼:

          第一個參數表示你所使用的動畫的名稱(即我們創建的動畫的動畫名稱),

          第二個參數表示動畫完成的時間(即由0%到100%所用的時間),

          第三個參數表示動畫執行的次數(可以為任意數字,infinite表示規定動畫無限次播放),因此造成了一個動態的箭頭的視覺效果。

          通過以上三個步驟即可完成這個簡單的動畫效果,很多的動畫效果都可以通過創建動畫的方式來實現。

          原文地址北京市盛世陽光文化傳播有限責任公司:http://www.gonet.com.cn/webduirshow-140.html


          主站蜘蛛池模板: 一区二区免费电影| 在线日产精品一区| 国产99视频精品一区| 精品永久久福利一区二区| 无码AV天堂一区二区三区| 精品无码一区在线观看| 99久久无码一区人妻a黑| 无码乱码av天堂一区二区| 国产福利微拍精品一区二区| 中字幕一区二区三区乱码 | 国产小仙女视频一区二区三区| 亚洲AV无码一区二区三区牛牛| 亚洲精品色播一区二区| 精品人妻一区二区三区四区在线| 国产91精品一区| 色窝窝无码一区二区三区色欲| 国产美女一区二区三区| 四虎永久在线精品免费一区二区 | 国产精品免费一区二区三区| 亚洲AV福利天堂一区二区三 | 正在播放国产一区| 丰满岳乱妇一区二区三区| 精品无码人妻一区二区三区| 国产日韩精品一区二区在线观看| 国产在线不卡一区二区三区| 亚洲熟女综合一区二区三区| 中文字幕一区日韩在线视频| 99精品国产一区二区三区2021| 一区二区三区日本电影| 日韩av片无码一区二区不卡电影| 中文字幕日本精品一区二区三区 | 亚洲一区二区三区在线视频| 日本免费一区二区在线观看| 丰满爆乳一区二区三区| 国产成人高清亚洲一区91| 国产精品揄拍一区二区| 亚洲一区二区三区影院| 亚洲一区精品伊人久久伊人| 综合一区自拍亚洲综合图区| 久久中文字幕一区二区| 一区二区三区在线观看免费|