CSS制作簡單loading動畫

  曾經以為,loading的制作需要一些比較高深的web動畫技術,后來發現大多數loading都可以用“障眼法”做出來。比如一個旋轉的圓圈,并不都是將gif圖放進去,有些就是畫個靜止圖像,然后讓它旋轉就完了。gif圖也可以,但是加載時間比較長。

  CSS的animation可以做出大多數的loading,比如:

?

loading1:

1、HTML:

1 <div id="ddr">
2     <div class="ddr ddr1"></div>
3     <div class="ddr ddr2"></div>
4     <div class="ddr ddr3"></div>
5     <div class="ddr ddr4"></div>
6     <div class="ddr ddr5"></div>
7 </div>

2、CSS:

 1 #ddr{
 2     margin: 0 auto;
 3     width: 70px;
 4     height: 120px;
 5 }
 6 .ddr{
 7     width: 10px;
 8     height: 120px;
 9     float: left;
10     margin: 2px;
11     background-color: #00ff00;
12     animation: loading 1s infinite ease-in-out;/*animation:動畫名稱 持續時間 動畫速度曲線 延遲 執行多少次 是否正反方向輪流播放*/
13 }
14 .ddr2{
15     animation-delay: -0.9s;/*定義開始執行的地方,負號表示直接從第900ms開始執行*/
16 }
17 .ddr3{
18     animation-delay: -0.8s;
19 }
20 .ddr4{
21     animation-delay: -0.7s;
22 }
23 .ddr5{
24     animation-delay: -0.6s;
25 }
26 @keyframes loading {
27     0%,40%,100%{ /*定義每幀的動作*/ 28         -webkit-transform: scaleY(0.5);
29     }
30     20%{
31         -webkit-transform: scaleY(1);
32     }
33 }

loading2:

1、HTML:

1 <div id="circle"></div>

2、CSS:

 1 #circle{
 2     margin: 20px auto;
 3     width: 100px;
 4     height: 100px;
 5     border: 5px white solid;
 6     border-left-color: #ff5500;
 7     border-right-color:#0c80fe;
 8     border-radius: 100%;
 9     animation: loading1 1s infinite linear;
10 }
11 @keyframes loading1{
12     from{transform: rotate(0deg)}to{transform: rotate(360deg)}
13 }

loading3:

1、HTML:

1 <div id="loader3">
2     <div id="loader3-inner"></div>
3 </div>

2、CSS:

 1 #loader3{
 2     box-sizing: border-box;
 3     position: relative;
 4     margin-left: 48%;
 5     transform: rotate(180deg);
 6     width: 50px;
 7     height: 50px;
 8     border: 10px groove rgb(170, 18, 201);
 9     border-radius: 50%;
10     animation: loader-3 1s ease-out alternate infinite;/* alternate表示則動畫會在奇數次數(1、3、5 等等)正常播放,而在偶數次數(2、4、6 等等)反向播放 */
11 }
12 #loader3-inner{
13     box-sizing: border-box;
14     width: 100%;
15     height: 100%;
16     border: 0 inset rgb(170, 18, 201);
17     border-radius: 50%;
18     animation: border-zoom 1s ease-out alternate infinite;
19 }
20 @keyframes loader-3 {
21     0%{
22         transform: rotate(0deg);
23     }
24     100%{
25         transform: rotate(-360deg);
26     }
27 }
28 @keyframes border-zoom {
29     0%{
30         border-width: 0px;
31     }
32     100%{
33         border-width: 10px;
34     }
35 }

loading4:

1、HTML:

1 <div id="loading4">
2     <div id="loader4" class="heart"></div>
3 </div>

2、CSS:

 1 #loading4{
 2     width: 100%;
 3     height: 100px;
 4 }
 5 #loader4{
 6     position: relative;
 7     margin-left: calc(50% - 25px);
 8     width: 50px;
 9     height: 50px;
10     animation: loader-4 1s ease-in-out alternate infinite;
11 }
12 .heart:before{
13     position: absolute;
14     left: 11px;
15     content: "";
16     width: 50px;
17     height: 80px;
18     transform: rotate(45deg);
19     background-color: rgb(230, 6, 6);
20     border-radius: 50px 50px 0 0;
21 }
22 .heart:after{
23     position: absolute;
24     right: 11px;
25     content: "";
26     width: 50px;
27     height: 80px;
28     background-color: rgb(230, 6, 6);
29     transform: rotate(-45deg);
30     border-radius: 50px 50px 0 0;
31 }
32 @keyframes loader-4 {
33     0%{
34         transform: scale(0.2);
35         opacity: 0.5;
36     }
37     100%{
38         transform: scale(1);
39         opacity: 1;
40     }
41 }

?

環形進度條:

0、原理:

?(1)、

如圖,先畫一個正方形,這個正方形就是環形loading的軌道(現在還不是),再將一個圓放在上面,充當遮蔽物。

(2)、

CSS3有個clip屬性,可以裁剪圖像,將上面的圓裁為一半,假如這個圓的右半部分一直看不見,旋轉左邊這個半圓,會出現怎樣的效果呢?

(3)、

如圖,就是這種效果,這時候再加一個遮罩,就形成了下面這種效果:

(4)、

再將最下面的正方形變成圓形(變成真正的軌道),旋轉橙色部分的圓環,底部青色的就會露出來,就形成了進度條的效果

(5)、

這是左邊的一半,將右邊的一半補齊:

(6)、

中間白色部分是mask,加上相應的文字,調整顏色就ok啦!

(7)、

1、HTML:

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 
 4 <head>
 5   <meta charset="UTF-8">
 6   <meta name="viewport" content="width=device-width, initial-scale=1.0">
 7   <meta http-equiv="X-UA-Compatible" content="ie=edge">
 8   <title>Document</title>
 9   <link rel="stylesheet" href="progress.css">
10 </head>
11 
12 <body>
13   <div class="circle">
14     <div class="preLeft">
15       <div class="left"></div>
16     </div>
17     <div class="preRight">
18       <div class="right"></div>
19     </div>
20   </div>
21   <div class="mask">
22     <span class="progress">0</span>%
23   </div>
24   <script src="progress.js"></script>
25 </body>
26 
27 </html>

2、CSS:

 1 *{
 2   margin: 0;
 3   padding: 0;
 4 }
 5 .circle {
 6   width: 200px;
 7   height: 200px;
 8   border-radius: 50%;
 9   box-shadow: 0 0 7px 0px inset;
10   background:linear-gradient(#9ED110, #50B517, #179067, #476EAF, #9f49ac, #CC42A2, #FF3BA7, #FF5800, #FF8100, #FEAC00, #FFCC00, #EDE604);
11   filter: blur(8px);
12   transform: scale(1.1);
13   -webkit-mask: radial-gradient(black 30px, #0000 90px);
14 }
15 .preLeft{
16   position: absolute;
17   top: 0;
18   left: 0;
19   width: 200px;
20   height: 200px;
21   clip: rect(0, 100px, auto, 0);
22 }
23 .left{
24   position: absolute;
25   top: 0;
26   left: 0;
27   width: 200px;
28   height: 200px;
29   border-radius: 50%;
30   box-shadow: 0 0 3px 0px inset;
31   background: #fff;
32   transform: rotate(0deg);
33   clip: rect(0, 100px, auto, 0);
34 }
35 .preRight{
36   position: absolute;
37   top: 0;
38   left: 0;
39   width: 200px;
40   height: 200px;
41   clip: rect(0, auto, auto, 100px);
42 }
43 .right {
44   position: absolute;
45   top: 0;
46   left: 0;
47   width: 200px;
48   height: 200px;
49   border-radius: 50%;
50   box-shadow: 0 0 3px 0px inset;
51   background:#fff;
52   transform: rotate(0deg);
53   clip: rect(0, auto, auto, 100px);
54 }
55 .mask {
56   width: 150px;
57   height: 150px;
58   position: absolute;
59   left: 25px;
60   top: 25px;
61   border-radius: 50%;
62   /* box-shadow: 0 0 5px 0px; */
63   background: #FFF; 
64   text-align: center;
65   line-height: 150px;
66 }

3、JS:

 1 function init() {
 2   let left = document.getElementsByClassName('left')[0];
 3   let right = document.getElementsByClassName('right')[0];
 4   let progress = document.getElementsByClassName('progress')[0];
 5   let value = 0;
 6   let timer = setInterval(() => {
 7     if (progress.innerHTML < 100) {
 8       progress.innerHTML = value  ;
 9       if (value <= 50) {
10         right.style.transform = 'rotate('   (value * 3.6)   'deg)';
11       } else if (value <= 100) {
12         left.style.transform = 'rotate('   ((value - 50) * 3.6)   'deg)';
13       }
14     } else {
15       clearInterval(timer);
16     }
17   }, 100);
18 }
19 window.onload = function () {
20   init();
21 };

-

逢年過節,百度或者谷歌都會在首頁播放一段動畫,比如元宵節:

這個動畫不僅僅是gif圖,有時候是一張長長的包含所有幀的圖片:

仿照animation一幀一楨的思路,可以將這張圖片做成動畫:

 1 #picHolder{
 2 /* 圖片樣式 */
 3     position: absolute;
 4     top: 17%;
 5     left: 50%;
 6     width: 270px;
 7     height: 129px;
 8     margin-left:-135px;
 9     background-image: url("../../../Library_image/tangyuan.png");
10     background-repeat: no-repeat;
11     background-position-x: 0;
12     cursor: pointer; 
13 }
 1 function animation () {
 2 /* 定時移動圖片,使觀眾看到不同的幀 */
 3   var po = 0
 4   var i = 0
 5   var holder = document.getElementById('picHolder')
 6   setInterval(function () {
 7     po  = -270
 8     i  
 9     holder.style.backgroundPositionX = po   'px'
10     if (i >= 31) {
11       i = 0
12       po = 270
13     }
14   }, 100)
15 }
16 window.onload = function () {
17   animation()
18 }

不過有時候他們又會放上一張gif圖,不懂他們的套路

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

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

相關文章

機器學習:多變量線性回歸

************************************** 注&#xff1a;本系列博客是博主學習Stanford大學 Andrew Ng 教授的《機器學習》課程筆記。博主深感學過課程后&#xff0c;不進行總結非常easy遺忘&#xff0c;依據課程加上自己對不明確問題的補充遂有此系列博客。本系列博客包含線性…

Java對象復活

總覽 收集覆蓋了finalize&#xff08;&#xff09;的對象之后&#xff0c;將其添加到終結處理隊列中&#xff0c;以在調用每個對象的finalize&#xff08;&#xff09;方法之后進行清理。 如果您復活該物體&#xff0c;會發生什么&#xff1f; 何時定稿&#xff1f; finalize方…

經過路由無法找到計算機,電腦無法啟動服務提示系統找不到指定的路徑(圖)

原標題&#xff1a;"電腦無法啟動服務提示系統找不到指定的路徑"相關電腦問題教程分享。 - 來源:191路由網。眾所周知&#xff0c;使用電腦的時候需要啟動一些服務才能使用相關的功能&#xff0c;但是如果出現無法啟動服務項&#xff0c;并且提示“錯誤3&#xff1a;…

有關域索引錯誤產生的原因及解決辦法

1說明 數據庫錯誤ORA-29861:域索引標記為LOADING/FAILED/UNUSABLE&#xff0c;其錯誤原因及解決辦法&#xff0c;根據ORACLE官方文檔的說法如下&#xff1a; // *Cause: An attempt has been made to access a domain index that is// being built or is marked faile…

詳細解讀css中的浮動以及清除浮動的方法

對于前端初學者來說&#xff0c;css浮動部分的知識是一塊比較難以理解的部分&#xff0c;下面我將把我學習過程中的心得分享給大家。 導讀&#xff1a; 1.css塊級元素講解 2.css中浮動是如何產生的 3.出現浮動后&#xff0c;如何清除浮動&#xff08;本文將涉及到多種清除浮動…

微信多開txt_電腦版微信怎么雙開、多開

新建一個txt文本文件&#xff0c;在文件中寫入如下代碼&#xff1a;echo offstart /d "C:\Program Files (x86)\Tencent\WeChat\" WeChat.exestart /d "C:\Program Files (x86)\Tencent\WeChat\" WeChat.exeexit保存文本文件。這里需要注意的是&#xff1a…

java 基礎--隨筆

---恢復內容開始--- java 對大小寫敏感。 java沒有任何無符號類型&#xff08;unsigned&#xff09;。 C/C是編譯型語言&#xff0c;java是解釋性語言。 JAVA編譯過程同C/C 的 編譯有些不同。當C編譯器編譯生成一個對象的代碼時&#xff0c;該代碼是為在某一特定硬件平臺運行而…

多源計算機培訓,多源數據匯聚的多流形學習算法研究

摘要&#xff1a;隨著信息技術和互聯網的飛速發展,人們可以從多個信息源獲得數據,即多源數據.由于多源數據具有類型多樣,尺度不統一等特點,對多源數據進行匯聚并提取有效信息是機器學習和模式識別等領域研究的熱點.由于多流形學習能夠有效地揭示復雜數據中的內在結構,因此本文主…

Ubuntu 16.04 安裝mysql5.7

技術更新換代&#xff0c;數據庫也不斷更新&#xff0c;需要不斷努力學習&#xff0c;下面就是如何在 ubuntu中安裝 mysql。 廢話不多說&#xff0c;上來就是干 一、安裝mysql 5.7 sudo apt-get update sudo apt-get install mysql-server 中間會提示您輸出root 密碼&#xff…

CSS多列布局(實例)

前言 一列布局二列布局三列布局 1 一列布局 一列布局&#xff1a; HTML部分 <!DOCTYPE html> <html> <head> <meta charset"utf-8" /> <title>一列布局</title> </head> <body> <div class"head">…

阿帕奇駱駝備忘單

輪詢一個空目錄&#xff08;并發送一個空消息&#xff0c;正文為空&#xff09;&#xff1a; from(file://temp?sendEmptyMessageWhenIdletrue)停止路線&#xff1a; .process(new Processor() {public void process(Exchange exchange) throws Exception {getContext().stopR…

js中雙感嘆號_JavaScript中雙嘆號(!!)作用

經常看到這樣的例子&#xff1a;vara&#xff1b;var b!!a;a默認是undefined。!a是true&#xff0c;!!a則是false&#xff0c;所以b的值是false&#xff0c;而不再是undefined&#xff0c;也非其它值&#xff0c;主要是為后續判斷提供便利。!!一般用來將后面的表達式強制轉換為…

大頭貼計算機教程,推薦!自家電腦也能拍大頭貼的秘密

您可能感興趣的話題&#xff1a;美圖拍拍核心提示&#xff1a;一直都超愛拍大頭貼&#xff0c;喜歡每張都能換不同的框框&#xff1b;喜歡可以直接看到效果&#xff0c;做出滿意的動作&#xff1b;喜歡將大頭貼和朋友們分享……不過夏日炎炎的&#xff0c;出門太麻煩&#xff0…

用CSS偽類制作一個不斷旋轉的八卦圖?

前言 介紹一下如何制作一個不斷旋轉的八卦圖。快速預覽代碼及效果&#xff0c;點擊&#xff1a;八卦圖 代碼如下&#xff1a; HTML部分 <!DOCTYPE html> <html> <head><meta charset"utf-8"><title>JS Bin</title> </head&…

js根據ip自動獲取地址(省市區)

HTML&#xff1a; <html><head><meta charset"utf-8"><meta name"viewport" content"widthdevice-width, user-scalableno, initial-scale1.0, maximum-scale1.0, minimum-scale1.0"><title>標題</title>&l…

流利的對象創建

關于此主題的文章很多&#xff08;絕大多數&#xff09;&#xff0c;但我只是想貢獻我的兩分錢&#xff0c;寫一篇簡短的文章&#xff0c;介紹如何使用Java中的Fluent Object Creation模式或對象構建器實例化Value Objects。 值對象是由其狀態&#xff08;值&#xff09;而不是…

計算機等級考試試題4,計算機等級考試二級模擬試題4

計算機等級考試二級模擬試題計算機等級考試二級模擬試題4基礎知識與FOXBASE程序設計(考試時間120分鐘&#xff0c;滿分100分)一、選擇題((1)-(40)每個選項1分,(41)-(50)每個選項2分,共60分)下列各題A)、B)、C)、D)、四個有選項中,只有一個選項是正確的(1)通常所說的主機主要包括…

springboot怎么替代jsp_如何在SpringBoot中使用JSP ?

1. 在pom.xm中加入支持JSP的依賴org.apache.tomcat.embedtomcat-embed-jasperprovidedjavax.servlet.jsp.jstljstl-api1.22. 在src/main/resources/application.properties文件中配置JSP和傳統Spring MVC中和view的關聯# MVCspring.view.prefix/WEB-INF/views/spring.view.suff…

css選擇器的綜合使用

代碼實現&#xff1a; 1 <!DOCTYPE html>2 <html lang"en">3 <head>4 <meta charset"utf-8">5 <title>css的綜合使用</title>6 <style>7 div {8 colo…

啟動tomcat時 一閃而過解決方法

【前文】 在實際開發中一般都是eclipsetomcat(也許還會用到tomcat的插件)&#xff0c;我們只需要在eclipse中單擊servers上的按鈕就可以成功啟動tomcat了&#xff0c; 但是如果想在tomcat的安裝目錄下 雙擊startup.bat啟動時卻一閃而過了。這是為什么呢&#xff08;tomcat啟動失…