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>

结语

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

相关推荐
hiahiahia12311 小时前
Streaming Model Output
开发语言·前端
paopaokaka_luck11 小时前
基于springboot+vue的益暖微光公益服务平台(DeepSeek公益助手、善款信息追溯、志愿服务积分闭环、ECharts运营分析、活动状态自动流转)
java·前端·javascript·spring boot·mysql·架构·echarts
栀椩11 小时前
Electron 内嵌页面跨域问题(CORS/PNA)解决全记录
前端·javascript·electron
asaotomo11 小时前
截图识题、AI 讲解、笔记沉淀:Chrome 扩展体验
前端·chrome·笔记
前端架构师-老李11 小时前
HTML与CSS基础第五课—HTML的空格、换行、横线相关知识
前端·css·html
SEO_juper11 小时前
Chrome 扩展一键查看当前页面 SEO 信息:不用切页面,点一下全出来
前端·javascript·chrome
Nymph_Zhu11 小时前
vue3+element-plus 文件上传
前端·typescript·vue3·element-plus
echome88811 小时前
CSS 布局:Flex 和 Grid 怎么选,附常见坑
前端·css·html
计算机魔术师12 小时前
科技巨头砸7400亿押注AI,为什么苹果成了唯一赢家?
前端
QianhangQianping12 小时前
撤销重做不是「存快照」:一个可视化编辑器的Operation 设计
java·前端·数据库·typescript·编辑器·前端架构·撤销重做