前端进阶之旅前端进阶之旅
基础篇
进阶篇
高频篇
精选篇
手写篇
原理篇
面经篇
自检篇
每日一题
  • 综合
    • 综合题型
    • 其他问题
    • 设计模式
    • 思维导图
    • 学习路线
  • 前端基础
    • HTTP
    • 浏览器
    • 计算机基础
  • 进阶学习
    • NPM工作流
    • Docker
    • Canvas
    • Node学习指南
    • 前端综合文章
  • 其他
    • Handbook
    • 职场话题
    • CSS可视化
小程序题库
公众号动态
博客动态
开发者导航
基础篇
进阶篇
高频篇
精选篇
手写篇
原理篇
面经篇
自检篇
每日一题
  • 综合
    • 综合题型
    • 其他问题
    • 设计模式
    • 思维导图
    • 学习路线
  • 前端基础
    • HTTP
    • 浏览器
    • 计算机基础
  • 进阶学习
    • NPM工作流
    • Docker
    • Canvas
    • Node学习指南
    • 前端综合文章
  • 其他
    • Handbook
    • 职场话题
    • CSS可视化
小程序题库
公众号动态
博客动态
开发者导航
  • React专栏

    • React组合式开发实战

      • 前端开发的四个时代
      • 企业管理系统的前世今生
      • 可视化页面搭建工具
      • 实战篇 01:开发前准备
      • 实战篇 02:项目脚手架
      • 实战篇 03:页面布局方案
      • 实战篇 04:权限管理机制
      • 实战篇 05:菜单匹配逻辑
      • 实战篇 06:消息通知设计
      • 实战篇 07:多语言支持
      • 继往开来:可视化页面搭建工具
    • React Hooks与Immutable实战

    • React SSR服务端渲染与同构实践

    • IM聊天系统前端开发实践

    • 微前端开发实战

    • React进阶实践

  • Vue专栏

  • 移动端专栏

  • Node专栏

  • 前端工程化专栏

  • 算法专栏

  • Typescript专栏

  • 其他专栏

完整面试题地址:
作者:程序员poetry
扫码关注作者公众号:「前端进阶之旅」 每天分享技术干货
前端进阶之旅公众号二维码

# 动效开发 3:补间动画

我们已经知道如何利用 CSS3 让网页元素动起来,也知道怎么样让它变得立体,接下来为大家讲解在实际工作过程中最为常见的两种基础动画形式 ——「补间动画」和「逐帧动画」,先从「补间动画」说起。

「补间动画」(Tween Animation)指的是:人为设定动画的关键状态(也就是关键帧),而关键帧之间的过渡过程则由计算机处理渲染的动画处理形式。

回想一下前面两个小节中的各种案例,不难发现 transition 属性实现的动画都属于补间动画,而对于 animation 属性来说,使用了除 steps 和 frames 以外的时间函数(如 ease、linear 或 cubic-bezier 等)的动画都属于补间动画。

可以说补间动画是 CSS3 动画中最常见的一种形式,常见到平时工作中几乎所有的动效需求案例都能找到它的影子。

# 案例实战 1 - 京东 2017 海外招聘 H5

我们以京东 2017 海外招聘 H5 的第三屏动画为例,为大家讲解如何利用 CSS3 实现补间动画。

# 步骤 1 - 动效审查与分解

动效审查与分解是动效开发的首要步骤,不管我们开发的是「补间动画」还是「逐帧动画」。根据提供的设计稿,和设计师一起围绕动效进行沟通审查(事实上有经验的设计师会在开始视觉设计之前提前和开发同学沟通动效,设计稿定稿之后再一起回顾沟通),了解设计师对动画时序的想法,并根据自己的开发经验评估预期动效设计的合理性,必要的时候给予设计稿调优建议。

动效审查完毕后,可以输出一张动画属性分解表,以便于后续开发的时候进行追溯调优,如下图所示。

# 步骤 2 - 根据需求进行切图

根据动画属性分解表,先进行切图(可回顾小册的第 2 小节),将需要添加动效的元素单独切出,如下图所示。

# 步骤 3 - 页面编码开发

切图完成后,我们根据设计稿进行构建还原,编写对应的页面 HTML 结构和样式。

具体的 HTML 代码和 SCSS 样式如下所示。

<!-- S 宣讲行程时间轴 -->
<div class="timeline">
  <div class="timeline_tit">
    宣讲行程
    <span>Campus Talk Schedule</span>
  </div>
  <div class="timeline_icon">
    <svg viewBox="0 0 102 102">
    <circle cx="51" cy="51" r="50" transform="rotate(90 51 51)"></circle>
  </svg>
  </div>
  <ul class="timeline_list">
    <li class="timeline_item timeline_item_sp">
      <span class="timeline_item_cnt flag"><i class="flag_sin"></i></span>
      <span class="timeline_item_cnt country"></span>
      <b></b>
    </li>
    <li class="timeline_item">
      <span class="timeline_item_cnt time">09 / 20</span>
      <span class="timeline_item_cnt city">INSEAD</span>
      <b></b>
    </li>
    <li class="timeline_item">
      <span class="timeline_item_cnt time">09 / 21</span>
      <span class="timeline_item_cnt city">NTU</span>
      <b></b>
    </li>
    <li class="timeline_item timeline_item_sp">
      <span class="timeline_item_cnt flag"><i class="flag_us"></i></span>
      <span class="timeline_item_cnt country">U.S</span>
      <b></b>
    </li>
    <li class="timeline_item">
      <span class="timeline_item_cnt time">09 / 26</span>
      <span class="timeline_item_cnt city">UCLA</span>
      <b></b>
    </li>
    <li class="timeline_item">
      <span class="timeline_item_cnt time">09 / 28</span>
      <span class="timeline_item_cnt city">UC Berkely</span>
      <b></b>
    </li>
    <li class="timeline_item">
      <span class="timeline_item_cnt time">10 / 05</span>
      <span class="timeline_item_cnt city">Wharton</span>
      <b></b>
    </li>
    <li class="timeline_item timeline_item_sp">
      <span class="timeline_item_cnt flag"><i class="flag_uk"></i></span>
      <span class="timeline_item_cnt country">U.K</span>
      &
fe
基础篇
进阶篇
高频篇
精选篇
手写篇
原理篇
面经篇
自检篇
每日一题
  • 综合
    • 综合题型
    • 其他问题
    • 设计模式
    • 思维导图
    • 学习路线
  • 前端基础
    • HTTP
    • 浏览器
    • 计算机基础
  • 进阶学习
    • NPM工作流
    • Docker
    • Canvas
    • Node学习指南
    • 前端综合文章
  • 其他
    • Handbook
    • 职场话题
    • CSS可视化
小程序题库
公众号动态
博客动态
开发者导航
  • React专栏

    • React组合式开发实战

      • 前端开发的四个时代
      • 企业管理系统的前世今生
      • 可视化页面搭建工具
      • 实战篇 01:开发前准备
      • 实战篇 02:项目脚手架
      • 实战篇 03:页面布局方案
      • 实战篇 04:权限管理机制
      • 实战篇 05:菜单匹配逻辑
      • 实战篇 06:消息通知设计
      • 实战篇 07:多语言支持
      • 继往开来:可视化页面搭建工具
    • React Hooks与Immutable实战

    • React SSR服务端渲染与同构实践

    • IM聊天系统前端开发实践

    • 微前端开发实战

    • React进阶实践

  • Vue专栏

  • 移动端专栏

  • Node专栏

  • 前端工程化专栏

  • 算法专栏

  • Typescript专栏

  • 其他专栏