HTML&&CSS动画|10秒复制Airbnb按钮特效(附代码片段)

演示效果

下面是通过HTML+css实现的卡片掉落的动画!

实现思路

css思路

  • 动画类定义
    • .animate-hover:hover:触发动画(持续2秒,变换原点)
  • 关键帧动画
    • fall:旋转 → 摇摆 → 掉落消失
  • 交互逻辑
    • 悬停在元素上时触发动画,最终元素下落并消失。

关键点

  • 动画触发:通过 :hover 伪类直接调用动画,无需 JavaScript。
  • 效果细节:旋转角度和位移模拟"铰链脱落"效果,transform-origin 确保围绕左上角旋转。
  • 兼容性:使用 -webkit- 前缀和媒体查询适配不同场景。

实现过程

HTML

markdown 复制代码
<div class="title animate-hover">css animation</div>
<div class="desc">卡片掉落动画(hover)</div>

基础动画

设置动画基础属性:持续时间、填充模式、变换原点、动画名称

markdown 复制代码
.animate-hover:hover {
    -webkit-animation-duration: 2s;
    animation-duration: 2s;
    -webkit-animation-fill-mode: both;
    animation-fill-mode: both;
    -webkit-animation-name: fall;
    animation-name: fall;
    -webkit-transform-origin: top left;
    transform-origin: top left
}

关键帧动画

  • @keyframes fall 定义动画效果:
    • 0%:起始状态,缓动函数为 ease-in-out。
    • 20%, 60%:旋转 80 度,模拟摇摆效果。
    • 40%, 80%:旋转 60 度,保持透明度为 1。
    • to:向下移动 700px 并消失(opacity: 0)
markdown 复制代码
@keyframes fall {
  0% {
      -webkit-animation-timing-function: ease-in-out;
      animation-timing-function: ease-in-out
  }

  20%,
  60% {
      -webkit-transform: rotate(80deg);
      transform: rotate(80deg);
      -webkit-animation-timing-function: ease-in-out;
      animation-timing-function: ease-in-out
  }

  40%,
  80% {
      -webkit-transform: rotate(60deg);
      transform: rotate(60deg);
      -webkit-animation-timing-function: ease-in-out;
      animation-timing-function: ease-in-out;
      opacity: 1
  }

  to {
      -webkit-transform: translate3d(0, 700px, 0);
      transform: translate3d(0, 700px, 0);
      opacity: 0
  }
}

完整代码

codepen.io/THApprentic...

结语

我组建了一个前端技术交流微信群,诚邀你加入。我会定期解答群成员的前端相关问题,并不定时分享行业干货;大家在学习新技术时也可以结为学习伙伴,互相督促共同进步。

关注公众号前端小饭桌回复"进群"获取二维码

相关推荐
用户0595401744612 小时前
把AI对话记忆存储测试从手工改成Playwright+pytest,覆盖率从20%提到96%,回归时间缩短90%
前端·css
醉城夜风~17 小时前
CSS盒模型(Box Model)
前端·css
呼噜想睡觉17 小时前
Flex弹性布局
css·html·css3
用户059540174461 天前
「记仇」记忆存储测试踩坑实录:用 Pytest+Docker 把 BUG 扼杀在凌晨 3 点前
前端·css
郑板桥301 天前
前端周刊 | 第 42 期:Rspack 2.0 破局、cdnjs 全量上云、CSS 交错动画入基线(2026.07.28 - 08.03)
前端·css
NutShell Wang1 天前
渐变刚甩掉「灰廊」,就被 OKLCH 裁出硬边:sRGB / HSL / OKLCH 三条插值路径的实测复盘
前端·css·vibe coding
用户059540174461 天前
Redis 记忆存储踩坑实录:一个并发写入 Bug 让我排查了 4 小时
前端·css
10WTW012 天前
Sprite-Motion-Lab:雪碧图动画编辑器
前端·css·雪碧图·spritemotionlab·10wtw01
醉城夜风~2 天前
CSS元素显示模式(display)
前端·css
开普勒chr3 天前
css样式diaplay:"contents"的妙用
css