CSS3-过渡&动画

CSS3-过渡

使用属性transition为元素配置过度

能用数值配置的属性,基本上都可以通过transition-property配置过度,例如:

  • height,width
  • background-color
  • 2D变换和3D变换的属性都可以实现过渡
  • box-shadow
  • opacity
  • all:所有能过渡的属性,都发生过渡
  • ……
.box{
    /* 设置哪个属性需要配置过度 */
    transition-property: height;
    
    /* 设置过渡的时间 */
    transition-duration: 1s;
}

duration中文释义:期间


高级使用

transition-delay

过渡延迟,当事件发生后经过延迟后在执行过渡

transition-timing-function

过渡的动画方式

  • ease:默认值,平滑过渡(慢-快-慢)
  • linear:匀速的
  • ease-in:先慢后快
  • ease-out:先快后慢
  • ease-in-out:慢快慢,相对于ease不够平滑
  • step--start:一步结束,不考虑时间
  • step-end:在duration时间过去后,一步结束
  • steps():分步骤进行过度
  • cubic-bezier:贝塞尔曲线,可以用来实现橡皮筋效果

cubic-bezier✿ cubic-bezier.com

通过这个网站来调整出贝塞尔曲线的具体数值


CSS3-动画

  • animation-name:为元素增加动画

  • animation-duration:配置动画持续时间

  • animation-delay:配置动画的延迟时间

.inner{
    animation-name: donghua;
    animation-duration: 3s;
}

/* 简易配置模式 */
@keyframes donghua{
    /* 第一帧 */
    from{
        
    }
    /* 最后一帧 */
    to{
        transform: translateX(900px);
    }
}


/* 完整配置方式 */
@keyframes donghua{
    /* 第一帧 */
    0%{
        
    }
    /* 最后一帧 */
    100%{
        transform: translateX(900px);
    }
}

其他属性

  • animation-timing-function:动画的过渡方式

    • 与过渡可选值相同
  • animation-iteration-count:动画播放的次数

    • infinite:无限循环
  • animation-direction:动画的方向

    • normal:正常方向(from-to)
    • reverse:反转方向(to-from)
    • alternate:往复运动
    • alternate-reverse:反转的往复运动
  • animation-fill-mode:动画之外的效果(动画静止时的显示效果)

    • forwards:保持最后一帧的状态
    • backwards:初始第一帧的状态
  • animation-play-state:动画的播放状态

    • pause:暂停动画

注意事项

  • 过渡一定要加在想要执行过渡的原始元素上
  • 两者都可以使用复合属性,需要注意的两个时间的顺序问题,第一个时间为持续时间,第二个属性为延迟时间,如果只写一个默认为持续时间
  • 动画不需要任何的触发条件,过渡必须得有一个触发条件
  • 动画可以通过对关键帧的控制来处理形变时的细枝末节,而过渡多数用来把控形变前和后的状态
  • 过渡多用于交互的美观和流畅性,所以用的更多