CSS 实现加载动画之一-菊花旋转

原文:CSS 实现加载动画之一-菊花旋转

最近打算整理几个动画样式,最常见的就是我们用到的加载动画。加载动画的效果处理的好,会给页面带来画龙点睛的作用,而使用户愿意去等待。而页面中最常用的做法是把动画做成gif格式,当做背景图或是img标签来引用,这种方式最简单,也不会有兼容性的问题。不过本人有时爱折腾,看到一些动画的效果,不管是简单也好,复杂也好,也想尝试用代码来实现它,换一种思维方式,就算在项目中用到的可能性很小,自己多动手多写写总归不会有坏处。

CSS3新增了很多强大的功能,虽然会有兼容性的问题,但是阻挡不了我们去使用它的这些新特性。像一些简单的动画以前靠画图工具来实现,现在单纯用CSS也能非常简单的实现。下面的案例就是利用CSS加html如何实现菊花旋转的动画。

 

1.先看gif图

 

2.代码实现思路

将这个动画分解下,共有五个步骤,先用一张图来说明下:

 

2.1 先定义元素容器,定义每个线条的位置。

2.2 因为考虑到旋转时每根线条的透明度不一致,故要把单根线条分为两个区块。

2.3 使用CSS的rotate方法来对线条进行旋转,旋转的度数取决于线条的数量,最终使线条形成一个正圆。

2.4 在形成圆形的线条上面覆盖一个与背景同色的正圆,正圆圆心与线条形成的圆心保持一致,这样整个形状就会有镂空的感觉。

2.5 这一步最关键,就是形成动画的核心,其实整个动画的实现过程非常简单,就是改变每根线条的透明度,这个可以通过animation的动画延迟来实现,即每根线条的动画延迟时间根据其位置决定。

 

3. 主要使用的技术

主要用到了CSS3的rotate旋转方法和animation方法。

3.1 rotate

rotate是transform方法中的一个属性,除了rotate之外,还有translate(平移),scale(缩放),skew(拉伸)。具体的就不详细解释了。

3.2 animation

animation方法的使用步骤是先使用@关键字定义动画的关键帧,然后在对应的样式名称里来引用。

案例中先定义动画load

@-webkit-keyframes load{
0%{opacity:0;}
100%{opacity:1;}
}

然后在使用动画的节点样式里来引用

.m-load2 .line div:nth-child(1):before{-webkit-animation:load 1.2s linear 0s infinite;}

其中load 1.2s linear 0s infinite这几个值分别对应动画的名称,动画持续的时间,动画显示的方式,动画的延迟时间,动画是否循环播放

另外还有动画播放的次数,动画是否反向播放等。

 

4.案例源代码

 

 1 <!DOCTYPE html>
 2 <html>
 3 <head>
 4 <meta http-equiv="Content-Type" Content="text/html; charset=utf-8;">
 5 <title>CSS3实现加载的动画效果1</title>
 6 <meta name="author" content="rainna" />
 7 <meta name="keywords" content="rainna's css lib" />
 8 <meta name="description" content="CSS3" />
 9 <style>
10 *{margin:0;padding:0;}
11 body{background:#535353;}
12
13 .m-load,.m-load2{width:36px;height:36px;margin:100px auto;}
14 .m-load{background:url('load-v1.gif') #535353 center center no-repeat;}
15 .m-load2{background:#535353;}
16
17 /** 加载动画的静态样式 **/
18 .m-load2{position:relative;}
19 .m-load2 .line div{position:absolute;left:16px;top:0;width:3px;height:36px;}
20 .m-load2 .line div:before,.m-load2 .line div:after{content:'';display:block;height:50%;background:#fcfcfc;border-radius:5px;}
21 .m-load2 .line div:nth-child(2){-webkit-transform:rotate(30deg);}
22 .m-load2 .line div:nth-child(3){-webkit-transform:rotate(60deg);}
23 .m-load2 .line div:nth-child(4){-webkit-transform:rotate(90deg);}
24 .m-load2 .line div:nth-child(5){-webkit-transform:rotate(120deg);}
25 .m-load2 .line div:nth-child(6){-webkit-transform:rotate(150deg);}
26 .m-load2 .circlebg{position:absolute;left:50%;top:50%;width:18px;height:18px;margin:-9px 0 0 -9px;background:#535353;border-radius:18px;}
27
28 /** 加载动画 **/
29 @-webkit-keyframes load{
30     0%{opacity:0;}
31     100%{opacity:1;}
32 }
33 .m-load2 .line div:nth-child(1):before{-webkit-animation:load 1.2s linear 0s infinite;}
34 .m-load2 .line div:nth-child(2):before{-webkit-animation:load 1.2s linear 0.1s infinite;}
35 .m-load2 .line div:nth-child(3):before{-webkit-animation:load 1.2s linear 0.2s infinite;}
36 .m-load2 .line div:nth-child(4):before{-webkit-animation:load 1.2s linear 0.3s infinite;}
37 .m-load2 .line div:nth-child(5):before{-webkit-animation:load 1.2s linear 0.4s infinite;}
38 .m-load2 .line div:nth-child(6):before{-webkit-animation:load 1.2s linear 0.5s infinite;}
39 .m-load2 .line div:nth-child(1):after{-webkit-animation:load 1.2s linear 0.6s infinite;}
40 .m-load2 .line div:nth-child(2):after{-webkit-animation:load 1.2s linear 0.7s infinite;}
41 .m-load2 .line div:nth-child(3):after{-webkit-animation:load 1.2s linear 0.8s infinite;}
42 .m-load2 .line div:nth-child(4):after{-webkit-animation:load 1.2s linear 0.9s infinite;}
43 .m-load2 .line div:nth-child(5):after{-webkit-animation:load 1.2s linear 1s infinite;}
44 .m-load2 .line div:nth-child(6):after{-webkit-animation:load 1.2s linear 1.1s infinite;}
45 </style>
46 </head>
47
48 <body>
49 <div class="m-load"></div>
50
51 <div class="m-load2">
52     <div class="line">
53         <div></div>
54         <div></div>
55         <div></div>
56         <div></div>
57         <div></div>
58         <div></div>
59     </div>
60     <div class="circlebg"></div>
61 </div>
62 </body>
63 </html>
时间: 2024-10-04 12:01:57

CSS 实现加载动画之一-菊花旋转的相关文章

CSS 实现加载动画之四-圆点旋转

原文:CSS 实现加载动画之四-圆点旋转 圆点旋转也是加载动画中经常用到的.其实现方式和菊花旋转一样,只不过一个是线条形式,一个是圆点形式.圆点按照固定的旋转角度排列,加上延时的改变透明度的动画就可以实现.这个实现也比较简单.   1. 动画截图     2. 案例源代码 1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta http-equiv="Content-Type" Content="tex

CSS 实现加载动画之五-光盘旋转

原文:CSS 实现加载动画之五-光盘旋转 今天做的这个动画叫光盘旋转,名字自己取的.动画的效果估计很多人都很熟悉,就是微信朋友圈里的加载动画.做过前面几个动画,发现其实都一个原理,就是如何将动画的元素如何分离出来.这个动画的实现也很简单,关键点在于如何将元素拼凑成风车形状.然后定义动画的关键帧为rotate 360度,应用于整个元素上,就可以使整个元素旋转起来.案例在请在chrome中查看.   1. 先看截图   2. 代码实现思路 2.1 首先还是定义四个元素,元素的中心为这四个元素组成的圆

CSS 实现加载动画之二-圆环旋转

原文:CSS 实现加载动画之二-圆环旋转 上次简单的介绍了下如何用代码实现菊花旋转的加载动画,动画点击,这次继续我们的动画系列,实现另外一种加载动画,圆环旋转.与上次不同的是,菊花旋转是通过改变元素透明度来实现动画,这次因为考虑到元素叠加,加上元素本身带有背景色,如果改变透明度会影响效果,所以直接改变元素的背景颜色,加上适当的延时,就可以实现这种圆环的效果.动画实现的根本原理就是将每个需要变化的元素以及变化的过程分离出来. 所有的动画在chrome中调试,未考虑到兼容性以及性能问题,只是单纯的介

CSS 实现加载动画之三-钢琴按键

原文:CSS 实现加载动画之三-钢琴按键 今天做的这个动画实现也是非常简单,简单数几行代码就可以搞定.给这个动画取了个优雅的名字--钢琴按键,也实在是想不出什么更形象的名字了.废话不多说,直接上图.   1. 先看gif图   2. 代码实现思路 2.1 定义五个方块的元素. 2.2 对方块元素使用动画,延时改变透明度.   3. 主要使用的技术 主要用到了animation动画 @-webkit-keyframes load{ 0%{opacity:1;} 100%{opacity:0;}}.

用css3制作旋转加载动画的几种方法

以WebKit为核心的浏览器,例如Safari和Chrome,对html5有着很好的支持,在移动平台中这两个浏览器对应的就是IOS和Android.最近在开发一个移动平台的web app,那么就有机会利用css3去实现一些很酷的效果,这些效果原来更多的是利用图片来实现.最近的一个改进就是利用css3制作旋转加载动画.以下将分别介绍几种实现的方案. 方案1,图片辅助 传统做法是直接用动态的GIF图片,这个方案是用PNG图片加上背景颜色来模拟静止的加载图片,然后利用css中的animation处理图

HTML5 五彩圆环Loading加载动画实现教程

原文:HTML5 五彩圆环Loading加载动画实现教程 今天我们要来介绍一款效果很特别的HTML5 Loading加载动画,不像其他的Loading动画,这款Loading动画颜色很丰富,并且在转圈的时候还有淡入淡出的效果.每一个圆环不停地旋转,从而实现加载动画的效果.首先你可以看看效果演示: 你也可以在这里查看在线演示 下面分享一下这款HTML5 Loading动画的实现过程,主要是HTML代码和CSS3代码,以及初始化的JS代码. 首先是HTML代码,只定义一个Loading容器,非常简单

Android仿支付宝笑脸刷新加载动画的实现代码_Android

看到支付宝的下拉刷新有一个笑脸的动画,因此自己也动手实现一下.效果图如下: 一.总体思路 1.静态部分的笑脸. 这一部分的笑脸就是一个半圆弧,加上两颗眼睛,这部分比较简单,用于一开始的展示. 2.动态笑脸的实现. 2.1.先是从底部有一个圆形在运动,运动在左眼位置时把左眼给绘制,同时圆形继续运动,运动到右眼位置时绘制右眼,圆形继续运动到最右边的位置. 2.2.当上面的圆形运动到最右边时候,开始不断绘制脸,从右向左,脸不断增长,这里脸设置为接近半个圆形的大小. 2.3.当脸画完的时候,开始让脸旋转

CSS3制作loading加载动画效果代码

  在我们这次的新设计教程中,我将向您展示如何创建纯CSS3的loading加载动画组件(没有任何图像).我认为它可以为你减少项目的代码量和额外的图像对你网站的负载.我准备了三种不同风格的加载组件.现在,让我们看看我做的. css3-loading Step 1. HTML 你可以在这里看到的三个元素–放置"加载"元素的div.  代码如下   <div class="main_body">     <div class="element

2款不同样式的CSS3 Loading加载动画 附源码

原文:2款不同样式的CSS3 Loading加载动画 附源码 我们经常看到的Loading加载很多都是转圈圈的那种,今天我们来换一种有创意的CSS3 Loading加载动画,一种是声波形状的动画,另一种是折线弯曲的动画,它们实现起来也非常简单,先来看看效果图: 看起来还挺特别的吧.. 另外你也可以在这里看到这个Loading动画的DEMO演示 接下来我们来看看如何用CSS3来实现这2款特别的Loading动画的. 首先是HTML代码,构造了2个Loading容器: 这是第一个: <div sty