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

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

前言

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

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

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

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

位移效果类元素动画

水平抖动效果

水平抖动效果:通过元素水平方向上的来回快速抖动实现,其效果图如下所示:

效果预览

代码实现

html 复制代码
<style>
/* 水平抖动效果 */
@keyframes shakeX {
  /* 元素开始和结束位置不变 */
  0%, 100% {
    transform: translateX(0);
  }
  /* 左右交替动画 */
  10%, 30%, 50%, 70%, 90% {
    transform: translateX(-10px);
  }
  20%, 40%, 60%, 80% {
    transform: translateX(10px);
  }
}
.shake-x {
  display: inline-block;
  height: 100px;
  font-size: 100px;
  font-weight: bold;
}
.shake-x:hover {
  animation: shakeX 1s 1;
}
</style>

<body>
  <span class="shake-x">水平抖动</span>
</body>

垂直抖动效果

垂直抖动效果:通过元素垂直方向上的来回快速抖动实现,其效果图如下所示:

效果预览

代码实现

html 复制代码
<style>
/* 垂直抖动效果 */
@keyframes shakeY {
  /* 元素开始和结束位置不变 */
  0%, 100% {
    transform: translateY(0);
  }
  /* 上下交替动画 */
  10%, 30%, 50%, 70%, 90% {
    transform: translateY(-10px);
  }
  20%, 40%, 60%, 80% {
    transform: translateY(10px);
  }
}
.shake-y {
  display: inline-block;
  height: 100px;
  font-size: 100px;
  font-weight: bold;
}
.shake-y:hover {
  animation: shakeY 1s 1;
}
</style>

摇头动画效果

摇头动画效果:类型于水平动画效果,但抖动幅度比水平效果要轻,且动画细节更复杂,其效果图如下所示:

效果预览

代码实现

html 复制代码
<style>
/* 摇头动画效果 */
@keyframes shakeX {
  /* 元素开始和结束位置不变 */
  0%, 100% { transform: translateX(0);}
  13% { transform: translateX(-6px) rotateY(-9deg); }
  29% { transform: translateX(5px) rotateY(7deg); }
  63% { transform: translateX(-3px) rotateY(-5deg); }
  97% { transform: translateX(2px) rotateY(3deg); }
}
.shake-head {
  display: inline-block;
  height: 100px;
  font-size: 100px;
  font-weight: bold;
}
.shake-head:hover {
  animation: shakeX 0.5s 1;
}
</style>

<body>
  <span class="shake-head">摇头动画</span>
</body>

点头动画效果

点头动画效果:类型于垂直动画效果,但抖动幅度比垂直效果要轻,且只会向下位移,动画细节更复杂,其效果图如下所示:

效果预览

代码实现

html 复制代码
<style>
 @keyframes nod {
  /* 元素开始和结束位置不变 */
  0%, 100% { transform: translateY(0); }
  /* 向下位移 */
  50% { transform: translateY(10px); }
 }
 .nodding {
   display: inline-block;
   height: 100px;
   font-size: 100px;
   font-weight: bold;
 }
.nodding:hover {
  animation: nod 1s 2 ease-in-out;
}
</style>

<body>
  <span class="nodding">点头动画</span>
</body>

结语

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

相关推荐
福兮说5 小时前
设计稿是 #4A7C6F,页面量出来是 #4B7C6F:HEX、HSL、透明度、canvas 来回转的七个坑
前端·javascript·css·canvas
郑州光合科技余经理5 小时前
海外版外卖加盟:总站与分站配送规则怎么分开管
java·开发语言·前端·后端·uni-app·php·ai编程
小呆呆6666 小时前
副业搞起来,小说,漫画,漫剧的成本优化思路
前端·后端·面试
Dovis(誓平步青云)6 小时前
浇水提醒刚弹出又消失,植物状态别只存一个百分比
开发语言·前端·javascript·pdf·ecmascript·电脑
码艺-Alimjan7 小时前
Vben Admin 新增维吾尔语 Vben-Modal的关键坑之一
前端·javascript·vue.js
可乐鸡翅yeah_7 小时前
hls.js 手动自定义 http 请求 loader,修改请求头实战
开发语言·前端·javascript·网络协议·http·ecmascript·m3u8在线
IT_陈寒8 小时前
Vite静态资源导入这个坑我帮你们踩过了
前端·人工智能·后端
广州华水科技8 小时前
大坝安全监测解决方案:单北斗GNSS形变监测系统应用与维护
前端
yivifu8 小时前
中文古籍电子书注释集成
前端·javascript·python·beautifulsoup·epub
weixin_448290259 小时前
书庐开发实战教学
javascript·css·html