CSS 实现风吹动树叶的动画

如题,要实现树叶在风中摇摆的动画,首先准备主体:树叶

这里准备了两张矢量的高清版 SVG 格式的不同种类的树叶。

首先我们使用 img 标签来在网页中显示树叶,然后给它一个名为 leaf 的类,好给它附加样式。

go 复制代码
<img class="leaf" src="/blog/virtual_safari_leaf.svg" alt="Leaf" />

接下来就是编写 CSS 动画代码,这里利用了 tranform 属性中的两个变换,skew 将元素在二维平面上倾斜角度进行拉伸,rotate 以中心为坐标轴进行旋转。

go 复制代码
.leaf {
  transform: scale(0.8);
  animation: leftRuffle 3s infinite alternate;
}

@keyframes leftRuffle {
  50% {
    transform: scale(0.8) skew(5deg) rotate(-5deg);
  }
  100% {
    transform: scale(0.8) skew(0) rotate(0);
  }
}

我们先让第一个树叶动起来

第二个树叶我们将它左右翻转下,利用 scaleX(-1),然后同理

go 复制代码
.leaf {
  transform: scale(0.7) scaleX(-1);
  animation: rightRuffle 3s infinite alternate;
}

@keyframes rightRuffle {
  0% {
    transform: scale(0.7) scalex(-1) skew(0) rotate(0);
  }
  50% {
    transform: scale(0.7) scalex(-1) skew(5deg) rotate(-5deg);
  }
  100% {
    transform: scale(0.7) scalex(-1) skew(0) rotate(0);
  }
}

动是动起来了,可单独看是否觉得有点奇怪。

我们给它增加一个场景:

通常这种大树叶的绿植要么生长在热带雨林,要么被我们放在室内当做风景或者背景。

原文阅读体验更佳:https://spacexcode.com/blog/animate-leaf

  • END -
相关推荐
有志几秒前
Vue 学习总结(Java 后端工程师视角)
前端
踩着两条虫2 分钟前
VTJ.PRO 在线应用开发平台的DSL生命周期
前端·低代码·ai编程
我是伪码农2 分钟前
JS 复习
开发语言·前端·javascript
小碗细面2 分钟前
Claude Code 很强,但为什么我越来越常打开 Codex App?
前端·chatgpt·ai编程
愿你如愿3 分钟前
React Fiber 的主要目标是什么
前端·react.js
漂移的电子8 分钟前
【echarts 细节】
前端·javascript·echarts
im_AMBER10 分钟前
万字长文:从零实现 Yjs + Hocuspocus 协同文档
前端·react.js·前端框架
kyriewen10 分钟前
事件流与事件委托:当点击按钮时,浏览器里发生了什么?
前端·javascript·面试
是真的小外套12 分钟前
第十一章:Flask入门之从零构建Python Web应用
前端·python·flask
AY呀14 分钟前
# 从手写 debounce 到企业级实现:我在面试中如何“降维打击”面试官
前端·面试