animation关键帧动画易错点

animation动画易错点:

  1. animation动画结束后默认是保持动画执行前的原始状态而不是最后一帧,要保持最后一帧需要设置动画填充模式为forwards

  2. 如果有多个动画,必须要重新定义关键帧,不能在原有动画基础上reverse, (出场动画不能直接在入场动画上面reverse,需要重新定义关键帧@keyframes)

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>animation关键帧动画</title>
    <style>
        *{margin:0;padding:0}
        #d1{background:darkred;width: 200px;height: 200px;margin-top: 20px;margin-left: -200px;}
        #d1:hover{animation-play-state: paused;}  /*鼠标悬浮在上面就终止动画播放*/
        /* 设置动画来回切换,animation-direction:alternate只有在指定了播放次数的条件下才会生效*/
        /*.enter{animation:anim 2s infinite alternate;}*/

        .enter{animation:anim 0.5s forwards;
            /*animation动画结束时默认是回到动画执行前的原始状态,不会停留在最后一帧*/
            /*animation-fill-mode: forwards 单独控制动画填充模式的方式*/
        }
        /* 如果设置多个动画,要创建新的关键帧@keyframes,
        不能在原有动画基础上reverse会有bug,但是vue可以*/
        /*.leave{animation:anim 0.5s reverse;} */   /* 错误写法! */

        .leave{animation:anim2 0.5s reverse;}  /* 正确写法,多个动画需要重新定义关键帧后再使用 */
        /* 入场动画关键帧 */
        @keyframes anim {
            0%{opacity:0;transform:translateX(0%)}
            100%{opacity:1;transform:translateX(100%)}
        }
        /* 出场动画关键帧 */
        @keyframes anim2 {
            0%{opacity:0;transform:translateX(0%)}
            100%{opacity:1;transform:translateX(100%)}
        }
    </style>
</head>
<body>
<button class="btn">animation关键帧动画及classList操作class</button>
<div id="d1"></div>
</body>
<script>
    let btn=document.getElementsByClassName('btn')[0]
    let d1=document.getElementById('d1')
    btn.addEventListener('click',function(){
        // classList对象的contains方法用来查询是否存在某个class
        if(d1.classList.contains("enter")){
            d1.classList.remove('enter')
            d1.classList.add('leave')
        }else{
            d1.classList.remove('leave')
            d1.classList.add('enter')
        }
    })
</script>
</html>

相关易混淆的概念(transform变形,translate位移,transition过渡动画,animation关键帧动画):

  1. transform变形,是css属性,属性值有位移translate/旋转rotate/缩放scale/倾斜skew

    ①, 位移translate,包括translate(x轴移动距离,y轴移动距离),translateX(x),translateY(y)

    ②, 旋转rotate, 包括rotate(旋转角度),rotateX(),rotateY()

    ③, 缩放scale,包括scale(),scaleX(),scaleY()

    ④, 倾斜skew,包括skew(倾斜角度),skewX(),skewY()

  2. 动画属性,包括过渡动画transition和关键帧动画animation,关键帧动画必须结合@keyframs来使用,需要指定动画名称

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值