css过渡、动画

90 阅读4分钟

1.CSS过渡

css从一种样式转化为另一种样式时规定的一种变化变化规则,包括添加效果的css属性,过渡所需要的时间,过渡效果的时间曲线,以及多久之后进行过渡等等,在css我们用transition来进行书写。

下面是我们常用的属性极其

属性名属性描述属性值
transition-property需要添加效果的css属性all, none ,height
transition-duration过渡完成所需要的时间1s, 1000ms
transition-time-function规定过渡效果的时间曲线。默认是 "ease"linear, ease
transition-delay延迟多久之后进行过渡1s, 1000ms

 .item {
    width: 100px;
    height: 100px;
    background-color: pink;
    margin: 0 auto;
    margin-top: 100px;
    // 表示所有属性都添加,过程为1s,匀速变化,触发3s执行
    transition: all 1s linear 3s;
}
.item:hover {
    background-color: blue;
    height: 300px;
    width: 500px;
}

2.CSS动画

css动画与css过渡有相同之处,css动画可以理解为,你自己设置一个样式变化,同时控制他变化的过程, css动画用关键字animation来控制,可以自己定义动画类型使用@keyframe关键字

下面介绍animation的几种常见属性

属性名属性描述属性值
animation-name添加的动画的名称自定义动画的名称
animation-duration动画完成所需要的时间1s, 1000ms
animation-time-function规定动画效果的时间曲线。默认是 "ease"linear, ease
animation-iteration-count该动画执行的次数infinite
animation-directioncss动画的方向,默认为正向reverse,alternate
animation-fill-mode常用于在动画完成之后的操作,默认为nonenone, forwards
animation-play-data规定动画是否正在运行或暂停。默认是 "running"runing, paused
animation几种属性的简写形式
<style>
.container {
    height: 1000px;
    position: relative;
}
.item {
    width: 100px;
    height: 100px;
    background-color: pink;
    position: absolute;
    /* animation-fill-mode: forwards ; 表示动画完成后停留在原处,默认为回到起始位置*/
    /* animation-direction: alternate; 表示动画在奇数次时进行正向,默认为正向,reverse为反向*/
    /* animation-play-state: paused; 用来控制当前动画的状态*/
    animation: rotate 1s linear 3 forwards alternate running;
}
// 定义动画的类型
@keyframes rotate {
    0% {
        top: 0;
        left: 0;
    }
    50% {
        top: 0;
        left: 300px;
    }
    100% {
        left: 300px;
        top: 300px;
    }
}

3.请简要分析两者的区别

  • 触发方式不同:CSS过渡需要一个触发动作,比如 hover 或者点击等状态改变时才会触发;而CSS动画可以直接通过调用 animation-play-state 来控制动画的播放和暂停,不需要事件触发。
  • 控制能力不同: 过渡效果只能控制开始与结束,对中间状态无法控制;动画可以通过@keyframes来精确控制各个状态的样式。
  • 性能不同:过渡性能和动画性能相比更好,他只改变初始和结束时的状态而不必去关心中间值
  • 兼容性不同:虽然现代浏览器对两者普遍支持良好,但过渡相比动画在低版本浏览器的兼容性会略好一些。
  • 复杂性不同:过渡相对更简单,适合简单的交互效果;动画可以实现更复杂的 动效 ,但学习成本也较高。

4.渐进增强和优雅降级

  • 渐进增强:英文全称为progressive enhancement,指的是在开发页面时对低版本浏览进行构建页面,满足他的基本功能,然后再对高版本浏览器进行进行效果,交互等改进和追加功能以更好的完成用户体验
  • 优雅降级:初始开发时使用较为先进的技术开构建完整的页面及其功能,然后对低版本浏览器进行兼容操作

例如新浪微博网站这样亿级用户的网站,前端的更新绝不可能追求某个特效而不考虑低版本用户是否可用。一定是确保低版本到高版本的可访问性再渐进增强。

如果开发的是一款面向青少年的软件或网站,你明确这个群体的人总是喜欢尝试新鲜事物,喜欢炫酷的特效,喜欢把软件更新至最新版本,这种情况再考虑优雅降级。