当前位置: 首页 > news >正文

第 2 篇:快速上手 Framer Motion(实操入门)

在这里插入图片描述

1. 环境准备

在开始使用 Framer Motion 之前,你需要先确保你的开发环境中已经设置好了 React 项目。我们将使用 Next.js 作为示例,如果你是使用其他 React 框架,步骤也基本相同。

1.1 创建一个 Next.js 项目

如果你还没有创建 Next.js 项目,可以通过以下命令快速创建:

pnpm create next-app my-framer-motion-app
cd my-framer-motion-app
1.2 安装 Framer Motion

在项目根目录下执行以下命令安装 Framer Motion:

pnpm add framer-motion

这样,我们就完成了环境的安装和准备工作。


2. 基础使用:motion.div 和简单动画

在 Framer Motion 中,最常用的做法是将标准的 HTML 元素(如 divbutton 等)替换为 motion 组件,从而使它们具备动画能力。下面我们来实现一个简单的 div 动画。

2.1 创建一个简单的动画

打开你的项目,编辑 pages/index.js 文件,使用 motion.div 创建一个简单的动画:

import { motion } from from 'motion/react';export default function Home() {return (<div className="container"><motion.divinitial={{ opacity: 0 }}    // 初始状态:透明度为 0animate={{ opacity: 1 }}    // 动画结束状态:透明度为 1transition={{ duration: 1 }} // 动画持续时间为 1 秒className="box">Hello, Framer Motion!</motion.div></div>);
}
2.2 动画解释
  • initial: 定义了组件的初始状态,在这里我们让它的透明度为 0
  • animate: 定义了组件的目标状态,在这里我们将目标状态设置为透明度 1
  • transition: 定义了动画的过渡效果,duration: 1 表示动画持续 1 秒。

你应该能看到一个渐现的效果。

2.3 添加样式

为了更好地展示效果,给 motion.div 添加一些基础样式:

/* styles/globals.css */
.container {display: flex;justify-content: center;align-items: center;height: 100vh;background-color: #f0f0f0;
}.box {width: 200px;height: 200px;background-color: #3498db;display: flex;justify-content: center;align-items: center;color: white;font-size: 20px;border-radius: 10px;
}

现在,当你访问页面时,div 会从完全透明到逐渐显示出来。


3. 交互动画:鼠标悬停与点击

Framer Motion 还提供了便捷的方式来处理用户交互,如鼠标悬停 (whileHover) 和点击 (whileTap)。

3.1 鼠标悬停和点击动画

更新你的 motion.div,添加鼠标悬停和点击时的动画:

<motion.divinitial={{ opacity: 0.5, scale: 0.8 }}animate={{ opacity: 1, scale: 1 }}transition={{ duration: 0.5 }}whileHover={{ scale: 1.1 }}     // 鼠标悬停时放大whileTap={{ scale: 0.9 }}       // 点击时缩小className="box"
>Hover or Tap Me
</motion.div>
3.2 交互动画解释
  • whileHover: 当鼠标悬停在组件上时,动画会触发,元素会放大 1.1 倍。
  • whileTap: 当组件被点击时,元素会缩小到 0.9 倍。

这些动画让用户与页面交互时有了更生动的反馈。


4. 过渡效果:控制动画时序

Framer Motion 的 transition 属性可以用来精确控制动画的时序和缓动效果。

4.1 设置过渡效果
<motion.divinitial={{ x: -100 }}   // 初始状态:x轴偏移 -100pxanimate={{ x: 0 }}      // 动画目标状态:x轴偏移 0pxtransition={{duration: 1,          // 动画持续时间:1秒ease: "easeInOut"     // 缓动效果:easeInOut}}className="box"
>Slide In from Left
</motion.div>
4.2 过渡效果解释
  • ease: 设置缓动函数,这里使用 easeInOut,它会让动画既平滑地加速也平滑地减速。
  • duration: 设置动画的持续时间,单位为秒。

5. 总结

在本篇教程中,我们快速上手了 Framer Motion,完成了以下内容:

  • 安装和配置 Framer Motion
  • 使用 motion.div 创建简单的动画
  • 添加交互效果(悬停与点击)
  • 配置过渡效果,控制动画的时序和缓动

这些都是 Framer Motion 中非常基础和常见的用法,掌握了这些,你就可以轻松为 React 应用添加流畅的动画效果。


接下来,我们将在第 3 篇中深入学习如何使用 Variants 来实现复杂的动画效果。敬请期待!

相关文章:

  • 烽火ai场控接入deepseek自动回复话术软件
  • 【Python】列表的创建:[[] for _ in range(2)] 与 [[]] * 2有什么区别?
  • STM32F407实现内部FLASH的读写功能
  • 【MySQL】MySQL数据库 —— 简单认识
  • 第3篇:深入 Framer Motion Variants:掌握组件动画编排的艺术
  • django项目之添加资产信息功能
  • YOLOv3模型架构与原理详解
  • Python 冷门魔术方法
  • Redis 高可用集群搭建与优化实践
  • 波束形成(BF)从算法仿真到工程源码实现-第十节-非线性波束形成
  • vue中使用swiper坑记录
  • 二、The Power of LLM Function Calling
  • 京东商品详情API接口调用讲解(实战案例)
  • Day56 | 99. 恢复二叉搜索树、103. 二叉树的锯齿形层序遍历、109. 有序链表转换二叉搜索树、113. 路径总和 II
  • 使用openpyxl时的一些注意点
  • 1.2 腾讯校招通关指南-面试官评分标准:技术岗/产品岗核心考核点揭秘
  • 【自相关】全局 Moran’s I 指数
  • OPPO Android 移动设备日志文件目录结构及其内容分析
  • git合并分支原理
  • 适合stm32 前端adc使用的放大器芯片
  • 新加坡执政党人民行动党在2025年大选中获胜
  • 向左繁华都市,向右和美乡村,嘉兴如何打造城乡融合发展样本
  • 吴志朴当选福建德化县人民政府县长
  • 复星医药换帅:陈玉卿接棒吴以芳任董事长,吴以芳改任复星国际执行总裁
  • 习近平在上海考察时强调,加快建成具有全球影响力的科技创新高地
  • 探索演艺产业新路径,2万观众走进音乐科技融创节