CSS/SCSS 做一个心跳的动画

一、心电图数据化

做动画,需要动画曲线,心跳的曲线自然是心电图,网上随便找一个差不多的,选取完整的一部分

1. 横向10等分

找到基线,横向10等分。
整个图是一个心跳周期,10等分一会好算时间,对应 keyframe 中的 10% 20% 30%

2. 纵向10等分

以基线为基准,找到上半部分最高的位置作为最高处,从基线到最高处10等分。
再复制一份上面的坐标到下面。

3. 找到曲线中的关键点

找到曲线的关键点,这些就是我们要在动画中记录的变化位置

二、写动画 css

拿到图形数据之后,我们就需要对它进行代码化了。
其实就是把上面每个关键点都写到动画 css 的关键帧中。

这里我们用 SCSS 写,因为它可以使用算式。

SCSS 的使用教程移步这里: SCSS 日常基础用法

原理

动画时间轴
图中横向的 1-10 对应 keyframe 中的 from,10%,20%,30%...to

css 缩放实现
css 中使用 transform: scale() 实现对图形的放大缩小动画

css 动画缩放的比例如何算
图形的原始大小是 scale(1)
我们先设置一个缩放的最大值,比如 scale(1 + 0.2),那么变化的增幅就是 0.2,这个 0.2 就代表图中 从基线位置到最高点的距离 ,这样就可以计算出每个关键点的增幅。
比如:第二个关键点的位置差不多是 (横向 12%,纵向 10%),那么css关键帧中就是

开写 SCSS 动画

// 定义一个变量:增幅
$max-amplitude: 0.2;
// 第一帧的增幅就是:$max-amplitude * 0.1
@keyframes heart-bounce {from {transform: scale(1);}12% {transform: scale(1 + $max-amplitude * 0.1);}to {transform: scale(1);}
}

按照图中位置补齐所有关键点就是

@keyframes heart-bounce {from {transform: scale(1);}12% {transform: scale(1 + $max-amplitude * 0.1);}20% {transform: scale(1 - $max-amplitude * 0.05);}28% {transform: scale(1 - $max-amplitude * 0.1);}32% {transform: scale(1 + $max-amplitude * 1);}38% {transform: scale(1 - $max-amplitude * 0.2);}50% {transform: scale(1 - $max-amplitude * 0);}58% {transform: scale(1 - $max-amplitude * 0.1);}70% {transform: scale(1 - $max-amplitude * 0.5);}80% {transform: scale(1 - $max-amplitude * 0.1);}to {transform: scale(1);}
}

这样生成的 css 是这样的

@keyframes heart-bounce {from {transform: scale(1); }12% {transform: scale(1.02); }20% {transform: scale(0.99); }28% {transform: scale(0.98); }32% {transform: scale(1.2); }38% {transform: scale(0.96); }50% {transform: scale(1); }58% {transform: scale(0.98); }70% {transform: scale(0.9); }80% {transform: scale(0.98); }to {transform: scale(1); } }
/*# sourceMappingURL=heartbeat.css.map */

这样动画代码出来了,再定义一个类名 .heart-beat 来调用这个动画

.heart-beat{animation-duration: 1s; // 一个完整动画的持续时间animation-iteration-count: infinite; // 动画循环次数:无限循环animation-name: heart-bounce; // 调用的动画名,对应上面的 .heart-bounce
}

这样,在你需要跳动的图片或文字上使用该 class 即可

效果如图:

CSS/SCSS 做一个心跳的动画:keyframe相关推荐

  1. CSS 如何做一个比较真实有感觉的阴影效果

    CSS 如何做一个比较真实有感觉的阴影效果 效果如图: 阴影:你需要了解的: box-shadow 这个样式可以同时添加多个阴影,以 , 间隔即可 本例中的阴影有两个,一个向左偏移一个向右偏移 box ...

  2. 用three.js做一个新闻联播开头动画(一)

    一个好习惯,先给结论 最终效果如下: 在线体验地址:点我预览 代码地址:点我github 本文首发于:https://blog.gis1024.com/three_news_op_1.html 这里才 ...

  3. css怎么做向左拉伸动画_CSS核心动画技巧:重力,挤压和拉伸

    css怎么做向左拉伸动画 Previously I've talked about using ease-in and ease-out to enhance motion design. Those ...

  4. html与css编程证书,利用CSS布局做一个简单的荣誉证书(代码示例)

    本篇文章将给大家介绍如何使用css布局制作一个简单的荣誉证书,有趣且实用,希望对需要的朋友有所帮助! 那么利用css布局实现简单荣誉证书样式的效果是非常简单的,主要用到以下几个基础属性: backgr ...

  5. 用css做一个云朵的动画

    今天听讲了万晨曦老师的公开课,将所学的东西做一个总结. 首先,我们做一个蓝天白云和土地的背景. body{background: #5ca0e3; //蓝天 } .ground{ //土地width: ...

  6. 用css3做一个求婚小动画

    概述 本案例主要是运用到了css3的animation.keyframes.transform等属性,熟悉了,就可以做更多的其他动画效果,这几个属性功能非常强大. 详细 代码下载:http://www ...

  7. 用js做一个鼠标惯性动画

    用js做一个简单的鼠标惯性动画 <style type="text/css">#div1{width: 50px;height: 50px;background: re ...

  8. html+css+js 做一个加解密小网页

    孩子第一次做网页,比较菜,勿喷 本来是想做一个ctf的知识站和加解密站当作业交上去,但是时间太短了,又要准备高数和大雾简直人都要没了,就只写了base64,凯撒,和栅栏密码 html <!DOC ...

  9. 用CSS来做一个动画案例

    今天来做这么一个案例 添加一个动画实现上下渐变滚动的效果 首先还是我们HTML部分,一个大盒子装着五个子元素 下面别在意,之前写的时候看到有个网站有这么个注解我就复制了下来哈哈哈 <div cl ...

最新文章

  1. ygm900常用网站
  2. 重新设计一款Android App,我会怎么做?
  3. 数字化营销关键点:如何做好深度内容策略
  4. 【好程序员笔记分享】——下拉刷新和上拉加载更多
  5. 定义了过多字段-Excel
  6. 在java程序中定义的类有两种成员_java试题 急需答案 谢谢!!!
  7. Redis 网络编程
  8. centof7无法上网问题
  9. 函数在某点附近有界,但该点无极限值的例子
  10. sap新手学习第一天
  11. 查看本地计算机ip命令,查看你本机的IP信息的命令ipconfig详解【图】
  12. mac支持fat32格式吗 mac支持什么格式的移动硬盘
  13. 戴尔笔记本计算机图标,戴尔笔记本原装桌面图标不见了怎么处理
  14. 挖金矿问题-动态规划- 备忘录算法(最优解)
  15. 用计算机计算的加减乘除题目,在电脑上怎么做加减乘除算术题
  16. 2019年末,来一发基于Hexo自建博客生态指南!
  17. 服务器接上显示器操作,服务器接上显示器
  18. 77、基于STM32单片机的超市餐饮二维码/条形码摄像头识别结账扫码系统设计
  19. oracle下k M G,【性能调优】Oracle AWR报告指标全解析(2)
  20. badfail@qq.com+java_Java KeeperException.BadArgumentsException方法代码示例

热门文章

  1. var和let的用法及区别
  2. var和let的主要区别
  3. 【科普】机密资产Confidential Asset白皮书(4)
  4. 服务器安装snmp协议,snmp协议在windows下的安装与配置
  5. Linux修改文件所有者和用户组
  6. 独立人格,让人生更美好
  7. latex 图片相关设置
  8. unbuntu无法安装yum解决
  9. 趣图:众志成城,笑战疫情
  10. UBUNTU 18.04开机自启动脚本实现--打开终端、执行命令及终端输入文字