这是一款非常有创意的纯CSS3 loading加载文字动画特效。该loading文字特效中,字母O的内圆会不停的放大缩小,使用这个动画效果来提示用户当前的页面或任务正在加载中。
使用方法
HTML结构
该loading文字特效的HTML结构中,不动画的文字使用<span>
来制作,动画的文字使用一个三层嵌套的<div>
来制作。
< div id = "cupcake" class = "box" > < span class = "letter" >L</ span > < div class = "cupcakeCircle box" > < div class = "cupcakeInner box" > < div class = "cupcakeCore box" ></ div > </ div ></ div > < span class = "letter box" >A</ span > < span class = "letter box" >D</ span > < span class = "letter box" >I</ span > < span class = "letter box" >N</ span > < span class = "letter box" >G</ span > </ div > |
CSS样式
这个loading特效中的布局使用的是flex布局方式。IE11以下的浏览器都不支持CSS flex属性,所以布局会非常混乱。
#cupcake{ flex-direction :row; -webkit- flex-direction :row; -ms- flex-direction :row; -mos- flex-direction :row; -o- flex-direction :row; justify-content : center ; -webkit- justify-content : center ; -ms- justify-content : center ; height : 100% ; width : 100% ; background-color : #FFD454 ; } .letter{ font-size : 100px ; color : #222 ; font-family : tahoma ; } .box{ display : box; display : -webkit-box; display : -moz-box; display : -ms-flexbox; display : -webkit-flex; display : flex; } .cupcakeCircle, .cupcakeInner, .cupcakeCore{ border-radius : 50% ; -webkit- border-radius : 50% ; -moz- border-radius : 50% ; -ms- border-radius : 50% ; } .cupcake, .letter, .cupcakeCircle, .cupcakeInner, .cupcakeCore{ flex : none ; -webkit- flex : none ; -moz- flex : none ; -ms- flex : none ; -o- flex : none ; } .letter, .cupcakeCircle{ align-self: center ; -webkit-align-self: center ; -moz-align-self: center ; -o-align-self: center ; -ms-align-self: center ; } .cupcakeCircle{ align-items : center ; -ms- align-items : center ; justify-content : center ; -ms- justify-content : center ; height : 100px ; width : 100px ; background-color : #222 ; } |
字母的动画使用的是CSS animation来制作。动画被设置为无线循环,并使用ease-in-out
的easing效果。
.cupcakeInner{ align-self: center ; -ms-align-self: center ; justify-content : center ; -ms- justify-content : center ; height : 50% ; width : 50% ; background-color : #FFD454 ; animation-name :cupcakeAnimate; animation-duration : 500 ms; animation-direction :alternate; animation-timing-function :ease-in-out; animation-iteration-count :infinite; -webkit- animation-name :cupcakeAnimate; -webkit- animation-duration : 500 ms; -webkit- animation-direction :alternate; -webkit- animation-timing-function :ease-in-out; -webkit- animation-iteration-count :infinite; } .cupcakeCore{ align-self: center ; -ms-align-self: center ; height : 25% ; width : 25% ; background-color : #222 ; animation-name :coreAnimate; animation-duration : 1 s; animation-direction :alternate; animation-timing-function :ease-in-out; animation-iteration-count :infinite; -webkit- animation-name :coreAnimate; -webkit- animation-duration : 1 s; -webkit- animation-direction :alternate; -webkit- animation-timing-function :ease-in-out; -webkit- animation-iteration-count :infinite; } @-webkit-keyframes cupcakeAnimate{ to{ height : 90% ; width : 90% ; } } @keyframes cupcakeAnimate{ to{ height : 90% ; width : 90% ; } } @-webkit-keyframes coreAnimate{ to{ height : 90% ; width : 90% ; } } @keyframes coreAnimate{ to{ height : 90% ; width : 90% ; } } |