CSS元素动画篇:基于当前位置的变换动画(三)

基于当前位置的变换动画(三)

前言

CSS元素动画一般分为两种:一种是元素基于当前位置的变换动画,通过不明显的位移、缩放等方式,实现动画效果,如弹跳、闪烁、抖动等;另一种是元素基于页面位置的变换动画,通过位移、旋转等方式,实现动画效果,如飞入/飞出等。

基于当前位置的变换动画,我又将根据动画实现效果将其分为4类:

  1. 位移效果类:通过不明显的位移,实现元素动画效果,如:水平抖动、垂直抖动等。
  2. 旋转效果类:通过小幅度旋转,实现元素动画效果,如元素摇摆、摇晃等。
  3. 缩放效果类:通过缩放,实现元素动画效果,如脉冲效果、呼吸效果、心跳效果等。
  4. 透明度效果类:通过改变元素透明度,实现元素动画效果,如闪烁效果。

本文主要介绍缩放效果类的相关元素动画效果与代码实现。

缩放效果类元素动画

脉冲动画效果

脉冲动画效果:通过元素放大和缩小的效果,从而产生脉冲的感觉,其效果图如下所示:

效果预览

代码实现

html 复制代码
<style>
/* 脉冲动画 */
@keyframes pulse {
  0%, 100% {
    transform: scale(1);
  }
  50% {
    transform: scale(1.1);
  }
}
.pulse {
  display: inline-block;
  height: 100px;
  font-size: 100px;
  font-weight: bold;
}
.pulse:hover {
  animation: pulse 1s linear 1;
}
</style>

<body>
  <span class="pulse">脉冲动画</span>
</body>

橡皮筋动画效果

橡皮筋动画:通过元素伸张和缩小,让元素看起来像被拉长后迅速恢复原状,从而产生橡皮筋拉伸回弹的感觉,其效果图如下所示:

效果预览

代码实现

html 复制代码
<style>
/* 橡皮筋效果 */
@keyframes rubberBand {
  0%, 100% {
    transform: scale(1, 1);
  }
  30% {
    transform: scale(1.25, 0.75);
  }
  40% {
    transform: scale(0.75, 1.25);
  }
  50% {
    transform: scale(1.15, 0.85);
  }
  65% {
    transform: scale(0.95, 1.05);
  }
  75% {
    transform: scale(1.05, 0.95);
  }
}
.rubber-band {
  display: inline-block;
  height: 100px;
  font-size: 100px;
  font-weight: bold;
}
.rubber-band:hover {
  animation: rubberBand 1s 1;
}
</style>

<body>
  <span class="rubber-band">橡皮筋动画</span>
</body>

果冻动画效果

果冻动画效果:果冻效果和橡皮筋效果类似,只是在橡皮筋的动画基础上增加了轻微旋转,其效果图如下所示:

效果预览

代码实现

html 复制代码
<style>
/* 果冻效果 */
@keyframes jello {
  0%, 100% {
	transform: skewX(0deg) skewY(0deg);
  }
  15% {
	transform: skewX(-25deg) skewY(-25deg);
  }
  30% {
	transform: skewX(20deg) skewY(20deg);
  }
  45% {
	transform: skewX(-15deg) skewY(-15deg);
  }
  60% {
	transform: skewX(10deg) skewY(10deg);
  }
  75% {
	transform: skewX(-5deg) skewY(-5deg);
  }
}
.jello {
  display: inline-block;
  height: 100px;
  font-size: 100px;
  font-weight: bold;
}
.jello:hover {
  animation: jello 1s 1;
}
</style>

<body>
  <span class="jello">果冻动画</span>
</body>

欢呼动画效果

欢呼动画效果:通过元素放大和轻微抖动,实现简单的欢呼效果,其效果图如下所示:

效果预览

代码实现

html 复制代码
<style>
/* 欢呼动画 */
 @keyframes tada {
	0%, 100% {
		transform: scale(1) rotate(0deg);
	}
	10%, 20% {
		transform: scale(0.9) rotate(-3deg);
	}
	30%, 50%, 70%, 90% {
		transform: scale(1.1) rotate(3deg);
	}
	40%, 60%, 80% {
		transform: scale(1.1) rotate(-3deg);
	}
}
.tada {
  display: inline-block;
  height: 100px;
  font-size: 100px;
  font-weight: bold;
}
.tada:hover {
  animation: tada 1s 1;
}
</style>

<body>
  <span class="tada">欢呼动画</span>
</body>

心跳动画效果

心跳动画效果:心跳动画效果和脉冲类似,只是动画细节比脉冲更赋值,动画帧更多,其效果图如下所示:

效果预览

代码实现

html 复制代码
<style>
/* 心跳动画 */
@keyframes heartBeat {
  0%, 100% {
	transform: scale(1);
  }
  25%, 75% {
	transform: scale(1.1);
  }
  50% {
    transform: scale(0.9);
  }
}
.heart-beat  {
  display: inline-block;
  height: 100px;
  font-size: 100px;
  font-weight: bold;
}
.heart-beat:hover {
  animation: heartBeat 1s 1;
}
</style>

<body>
  <span class="heart-beat">心跳动画</span>
</body>

结语

本文主要介绍了几种常见的缩放效果类元素动画,你还知道哪些缩放效果类元素动画?欢迎在评论区留言分享!

相关推荐
Stevetagelian2 小时前
vue2实现元素拖拽
前端·javascript·css·vue.js
西哥写代码2 小时前
基于cornerstone3D的dicom影像浏览器 第二十一章 显示DICOM TAGS
前端·javascript·vue
Micro麦可乐3 小时前
前端图片裁剪上传全流程详解:从预览到上传的完整流程
前端·javascript·图片上传·图片裁切·cropper.js
Am1nnn3 小时前
CICD编译时遇到npm error code EINTEGRITY的问题
前端·npm·node.js
测试工程喵5 小时前
如何测试JWT的安全性:全面防御JSON Web Token的安全漏洞
前端·网络·功能测试·安全·json·接口测试·token
Python私教6 小时前
PrimeVue菜单组件深度解析:构建高效能的Web导航系统
前端·javascript·vue.js
iamtsfw7 小时前
记录:express router,可以让node.js后端文件里的路由分布的更清晰
前端·node.js
黑匣子~7 小时前
Vue 3 官方 Hooks 的用法与实现原理
前端·javascript·vue.js
Yvonne爱编码8 小时前
CSS-5.1 Transition 过渡
前端·css·状态模式·html5·hbuilder
恰恰兄8 小时前
webpack性能优化
前端·webpack·node.js