Framer Motion 教程
1. 简介
Framer Motion 是一个强大的动画库,专为 React 设计。它提供了简单易用的 API,使得在 React 应用中创建复杂的动画变得非常容易。本教程将带你从基础开始,逐步深入了解 Framer Motion 的各种功能和用法。
2. 环境搭建
在开始之前,确保你已经安装了 Node.js 和 npm。然后,使用 Create React App 创建一个新的 React 项目:
npx create-react-app framer-motion-demo
cd framer-motion-demo
接下来,安装 Framer Motion:
npm install framer-motion
3. 基础动画
3.1 引入 Framer Motion
在你的 React 组件中引入 Framer Motion:
import { motion } from 'framer-motion';
3.2 简单的动画
让我们从一个简单的动画开始。假设我们有一个按钮,当点击时,它会放大并改变颜色。
import React from 'react';
import { motion } from 'framer-motion';
function App() {
return (
<motion.button
whileHover={{ scale: 1.1, backgroundColor: '#ff0000' }}
whileTap={{ scale: 0.9 }}
>
Click Me
</motion.button>
);
}
export default App;
在这个例子中,whileHover 和 whileTap 是 Framer Motion 提供的两个属性,分别用于定义鼠标悬停和点击时的动画效果。
4. 进阶动画
4.1 过渡效果
Framer Motion 支持多种过渡效果,如 spring、tween 等。让我们来看一个使用 spring 过渡的例子:
import React from 'react';
import { motion } from 'framer-motion';
function App() {
return (
<motion.div
initial={{ opacity: 0, y: -100 }}
animate={{ opacity: 1, y: 0 }}
transition={{ type: 'spring', stiffness: 100 }}
>
Hello, Framer Motion!
</motion.div>
);
}
export default App;
在这个例子中,initial 定义了组件的初始状态,animate 定义了组件的目标状态,transition 定义了过渡效果。
4.2 关键帧动画
Framer Motion 还支持关键帧动画,允许你定义多个动画状态:
import React from 'react';
import { motion } from 'framer-motion';
function App() {
return (
<motion.div
animate={{
scale: [1, 2, 2, 1, 1],
rotate: [0, 0, 270, 270, 0],
borderRadius: ["20%", "20%", "50%", "50%", "20%"],
}}
transition={{
duration: 2,
ease: "easeInOut",
times: [0, 0.2, 0.5, 0.8, 1],
repeat: Infinity,
repeatDelay: 1
}}
>
Animate Me!
</motion.div>
);
}
export default App;
在这个例子中,animate 属性定义了多个动画状态,transition 属性定义了动画的持续时间、缓动函数、时间点和重复次数。
5. 实践练习
5.1 练习:创建一个简单的卡片翻转动画
目标:创建一个卡片组件,当点击时,卡片会翻转并显示背面内容。
提示:使用 motion.div 和 animate 属性来实现翻转效果。
5.2 练习:创建一个带有过渡效果的导航栏
目标:创建一个导航栏,当鼠标悬停在某个导航项上时,该项会放大并改变颜色。
提示:使用 whileHover 和 whileTap 属性来实现悬停和点击效果。
6. 总结
Framer Motion 是一个功能强大且易于使用的动画库,适用于 React 应用。通过本教程,你已经学会了如何使用 Framer Motion 创建基础和进阶的动画效果。希望你能继续探索 Framer Motion 的更多功能,并在你的项目中应用这些知识。
7. 参考资源
通过这些资源,你可以进一步深入学习和掌握 Framer Motion 和 React 的相关知识。