zoukankan      html  css  js  c++  java
  • CSS动画-step()帧动画

    Twitter使用了一种新的动画形式,使用一系列的图片来创建帧动画。

    下面是一个动画,鼠标移动到上面开始绽放。

    查看codepen 示例

    示例教程

    鼠标移动到星上显示动画

    首先我们要准备一系列构成动画的图片,这里我们使用Twitter收藏夹动画使用的图片集合来制作动画。

    下面是动画中要使用的图片集合,为了方便显示,我折行显示。

    twitter_fave_rectangle.png

    在实际开发中,我们要把图片放在一行,为了在动画中从第一帧过渡到最后一针,twitter_fave.png 这个文件把图片放在了一行。

    step() 计时函数

    和大多数的计时函数不同,如easecubic-bezier,动画是从开始到结束时平滑过渡的,而step()步骤函数,将动画分为多个步骤(帧),在多个步骤中急剧过渡,来显示动画效果。

    steps.png

    1、首先我们创建HTML标签

    <section class="fave"></section>
    

    2、添加背景图片样式

    .fave {
       70px;
      height: 50px;
      background: url(images/tritter_fave.png) no-repeat
      background-position: 0 0; // 图片指针定位左上角
    }
    

    3、在hover状态,鼠标悬浮到图片上,开始切换背景图片

    .fave:hover {
      background-position: -3519px 0; // 使背景图片相对容器左移,多余背景图片将溢出容器不显示
      transition: background 1s step(55); // 步骤为55步,即切换55帧动画
    }
    

    这里我们对背景进行切换,时间为1秒,分为55帧。

    为什么不用gif

    因为gif的图片更大,占用资源更多,不能控制帧率,而使用CSS动画可以自由控制帧率,可以方便控制动画的暂停、后退或其他适配功能。

    step计时函数的其他用途

    背景图片精灵只是step()计时函数的一个使用示例,它还能挖掘出更多的应用场景,如滴答的时钟等。

    参考链接

  • 相关阅读:
    js数组根据对象中的元素(相同的属性值)去重
    nginx设置add_header 跨域依旧失败解决
    canvas前端压缩图片和视频首屏缩略图并上传到服务器
    纯前端下载文件的方法
    vue多文件上传进度条 进度不更新问题
    jquery中attr和prop的区别
    为什么我认为数据结构与算法对前端开发很重要?
    CSS2.0实现面包屑
    Vue是如何渲染页面的,渲染过程以及原理代码
    js 事件驱动原理
  • 原文地址:https://www.cnblogs.com/iPing9/p/12082410.html
Copyright © 2011-2022 走看看