css动画属性整理,demo两则

css动画在项目中使用频繁,取代了flash或者动态图片的使用,以及更加出色的页面交互表现能力;绘制一个css的动画效果主要使用transition和animation;

transition属性

属性描述
transition简写,用于在一个属性中设置四个过渡属性
transition-property规定应用过渡的css属性名称
transition-duration定义过渡效果花费的时间,默认是0
transition-timing-function规定过渡效果时间曲线,默认是‘ease’
transition-delay规定过渡效果何时开始,默认是0

transition-property

规定应用过渡的css属性名称
语法:transition-property:none|all|property

描述
none没有属性会获得过渡效果
all所有属性都将获得过渡效果
property定义应用过渡效果的css属性名称列表,列表以逗号分隔

transition-duration

规定过渡效果花费的时间
语法:transition-duration:time

描述
time规定完成过渡效果需要花费的时间(以秒或毫秒计)。默认值是0,意味着不会有过渡效果

transition-timing-function

规定过渡效果的速度曲线
语法:transition-timing-function:linear|ease|ease-in|ease-out|ease-in-out|cubic-bezier(num,num,num,num)

描述
linear过渡从头到尾的速度都是相同的
ease过渡以低速开始,然后加快,在结束前变缓
ease-in过渡以低速开始
ease-out过渡以低速结束
ease-in-out过渡以低速开始和结束
cubic-bezier()在cubic-bezier函数中自己的值,可能的值是从0-1的数值

transition-delay

规定过渡效果花费的时间
语法:transition-delay:time

描述
time规定在过渡效果开始之前需要等待的时间,以秒或毫秒计

简单都组合使用几个过渡属性以及位置即可以快速实现下图效果;
在这里插入图片描述
完整代码如下:

	<div class="demo">
        <div class="demo-title">
            <h2>火车出行</h2>
            <h3>TRAIN</h3>
        </div>
        <div class="demo-pic">
            <img src="pc1.png" alt="">
            <img src="pc2.png" alt="">
            <img src="pc3.png" alt="">
        </div>
        <div class="shadow"></div>
    </div>
     .demo {float: left; margin-top: 100px;margin-left: 100px;width: 200px;}
     .demo:last-child {margin-right: 0;}
     .demo-title {text-align: center;}
     .demo-title h2 {font-size: 20px;color: #888;}
     .demo-title h3 {font-size: 18px;color: #78c1ff;}
     .demo-title h2,.demo-title h3 {opacity: 0;}
     .demo:hover .demo-title h2,.demo:hover .demo-title h3 {opacity: 1;transform: translateY(-40px);transition: all 1s;}
     .demo:hover .demo-title h3 {transition-delay: .2s;}
     .demo-pic {position: relative;width: 200px;height: 200px;border-radius: 50%;overflow: hidden;}
     .demo-pic img {position: absolute;}
     .demo-pic img:nth-child(1),.demo-pic img:nth-child(2) {left: 0;}
     .demo-pic img:nth-child(3) {left: -400px;}
     .demo:hover .demo-pic {transform: scale(1.2);transition: all .4s linear;}
     .demo:hover .demo-pic img {transition: all 1s linear;}
     .demo:hover .demo-pic img:nth-child(1),.demo:hover .demo-pic img:nth-child(2) {left: -400px;}
     .demo:hover .demo-pic img:nth-child(3) {left: 0;}
     .shadow {z-index: -1;width: 200px;height: 30px;margin-top: -56px;border-radius: 50%;box-shadow: 0 40px 20px rgba(120, 193, 255, .5);}
     .demo:hover .shadow {transform: scale(1.1);transition: all .5s linear;}

animation

除了transition过渡以外,animation就是另外一个大头了,animation使我们可以通过css3创建动画,这可以在许多网页中取代动画图片、flash动画以及javascript。

@keyframes

@keyframes规则

定义和用法:
创建动画的原理是,将一套css样式逐渐变化为另一套样式。
以百分比来规定改变发生的时间,或者通过关键词‘from’和‘to’,等价于0%和100%
0%是动画的开始时间,100%动画的结束时间。
注意用动画属性来控制动画的外观同时将动画与选择器绑定。
语法:

	@keyframes animationname{
		keyframes-selector{css-styles}
	}
描述
animationname必须,定义动画的名称
keyframes-selector必须,动画时长百分比,和法值0-100%;from-to
css-styles必须,一个或多个合法的css样式属性

keyframes所有动画属性:

属性描述
@keyframes规定动画
animation所有动画属性的简写属性,出了animation-play-state属性
animation-name规定@keyframes动画的名称
animation-duration规定动画完成一个周期所话费的秒或毫秒,默认是0
animation-timing-function规定动画的速度曲线,默认是ease
animation-delay规定动画何时开始,默认是0
animation-iteration-count规定动画被播放的次数,默认是1
animation-direction规定动画是否在下一周期逆向的播放,默认是normal
animation-play-state规定动画是否正在运行或暂停,默认是running
animation-fill-mode规定对象动画时间之外的状态
animation-name

定义和用法
animation-name属性为@keyframes动画规定名称
语法:animation-name:keyframename|none

描述
keyframename规定需要绑定到选择器的keyframe的名称
none规定无动画效果(可用于覆盖来自级联的动画)
animation-duration

定义和用法
动画完成一个周期所需要的时间,以秒或毫秒计
语法:animation-duration:time

描述
time规定完成动画所话费的时间,默认值是0,意味着没有动画效果
animation-timing-function

定义和用法
规定动画的速度曲线
语法:animation-timing-function:value

描述
linear过渡从头到尾的速度都是相同的
ease过渡以低速开始,然后加快,在结束前变缓
ease-in过渡以低速开始
ease-out过渡以低速结束
ease-in-out过渡以低速开始和结束
cubic-bezier()在cubic-bezier函数中自己的值,可能的值是从0-1的数值
animation-delay

定义和用法
animation-delay属性定义动画何时开始,值以秒或者毫秒计
语法:animation-delay:time

描述
time可选,定义动画开始前等待的时间,以秒或毫秒计,默认值是0

tips:允许负值,time = -1s时动画马上开始,但跳过1秒进入动画

animation-iteration-count

定义和用法
animation-iteration-count属性定义动画的播放次数
语法:animation-iteration-count:n|infinite

描述
n定义动画播放次数的数值
infinite规定动画应该无限次播放
animation-direction

定义和用法
属性定义是否应该轮流反向播放动画
如果animation-direction值是alternate,则动画会在奇数次数(1.3.5…)正常播放,而在偶数次(2.4.6…)向后播放
语法:animation-direction:normal|alternate

描述
normal默认值,动画应该正常播放
alternate动画应该轮流反向播放
animation-play-state

定义和用法
animation-play-state属性规定动画正在运行还是暂停。
tips:可以在javascript中使用该属性,这样就能在播放过程中暂停动画。
语法:animation-play-state:paused|running

描述
paused规定动画已暂停
running规定动画正在播放
animation-fill-mode

定义和用法
animation-fill-mode属性规定动画在播放之前或之后,其动画效果是否可见。
tips:其属性值是由逗号分隔的一个或多个填充模式关键词。
语法:animation-fill-mode:none|forwards|backwards|both

描述
none不改变默认行为
forwards当动画完成后,保持最后一个属性值(在最后一个关键帧中定义)
backwards在animation-delay所指定的一段时间内,在动画显示之前,应用开始属性值(在第一个关键帧中定义)
both向前和向后填充模式都被应用

综合运用animation以及transition可以实现如下骰子效果;自己敲一遍基本足够掌握动画的基本使用了;
在这里插入图片描述
废话少说,上代码:

	<div class="wrap">
        <div class="demo">
            <div id="div1" class="side">1</div>
            <div id="div2" class="side">2</div>
            <div id="div3" class="side">3</div>
            <div id="div4" class="side">4</div>
            <div id="div5" class="side">5</div>
            <div id="div6" class="side">6</div>
        </div>
    </div>
	#div1 {left: -50px;transform: translateX();transform: rotateY(90deg);}
    #div2 {left: 50px;transform: translateX();transform: rotateY(-90deg);}
    #div3 {transform: translateZ(50px);}
    #div4 {transform: translateZ(-50px);}
    #div5 {top: 50px;transform: translateX();transform: rotateX(90deg);}
    #div6 {top: -50px;transform: translateX();transform: rotateX(90deg);}
    @keyframes animationevent {
        0% {transform: rotateY(0);}
        50% {transform: rotateY(360deg);}
        100% {transform: translate3d(10px,10px,100px);}
    }
    .wrap {
        margin: 100px auto;
        width: 100px;
        perspective: 300;
        -moz-perspective: 300;
        -webkit-perspective: 300;
        perspective-origin: 100px 10px;
    }
    .demo {
        position: relative;
        top: 50px;
        width: 100px;
        height: 100px;
        animation: animationevent 5s infinite;
        animation-iteration-count:1;
        transform-style: preserve-3d;
    }
    .side {
        position: absolute;
        width:100px;
        height:100px;
        border: 1px solid #888;
        font-size: 30px;
        color: #888;
        line-height: 100px;
        text-align: center;
        border-radius: 30px;
    }

最后再分享一个我经常使用的动画效果素材库;https://animate.style/;一般项目中的动画效果基本都能满足,如果嫌弃动画库笨重可以下一个开发版的,直接搜索需要的效果类名,把目标动画cv出来就是了,非常适合懒人伸手党;对于新人学习简单动画,看看源码也非常简单。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值