npm 包 framer-motion 使用教程

在前端开发过程中,我们经常需要在页面上有动态效果,通过添加 css 动画是一种传统方式。然而,在大型应用程序中,手动管理动画状态可以变得非常麻烦。此时,现代前端库和框架为我们提供了很多使用更简单、灵活的动画工具。其中,npm 包 Framer-motion 是一种非常常用且功能强大的工具。

Framer-motion 是一个基于 React 的动画库,它提供了很多功能强大、易于使用和灵活的组件,能够轻松创建复杂的、流畅的交互动画。这篇文章将介绍如何在项目中使用 Framer-motion 包制作动画效果。

安装 framer-motion

在开始使用 Framer-motion 之前,我们需要在项目中安装这个包。我们可以通过运行以下命令安装:

--- ------- ------------- ------

使用 Framer-motion

接下来我们来看看如何使用 Framer-motion 包,主要有如下 4 个组件:

  1. motion

motion 是 Framer-motion 的基本组件,它的作用是将其子元素用动画包装起来,通过 Tween 的形式实现渐进动画,motion 标签可以设置一系列 onClick、onDragEnd 等常用事件来实现特定的交互效果。

------ - ------ - ---- ----------------
----------- ---------- -- --- -- ---

上述代码表示创建一个简单的 div 元素,它将被向右移动 100px,通过 animate 属性来实现。

  1. AnimatePresence

AnimatePresence 用于对整个组件进行进入和退出动画控制,可以用于路由切换和区块切换时控制动画流程,如下代码表示一个简单的在 div 元素在实现进入和退出动画:

------ - ------- --------------- - ---- ----------------
----- ----------- - -
  ------- - -------- -- -- -------- --
  -------- - -------- -- -- - --
--
----- --- - -- -- -
  ----- ----------- ------------- - ----------------
  ------ -
    ------- ----------- -- -----------------------------------------
    -----------------
      ---------- -- -
        -----------
          ----------------
          -----------------
          -------------
          ----------------------
        --
      --
    ------------------
  --
--

上述代码中,我们通过 useState 进行动态控制 isVisible 属性,点击 button 实现 div 的进入和退出动画,boxVariants 对象为 div 渐进动画的属性,AnimatePresence 组件用于包含 motion 组件,控制整个过程的渐进过渡。

  1. useAnimation

useAnimation 是一种 hooks 命名,它创建了一个能够控制动画的对象,通过控制对象状态达到控制动画的目的,使用方式如下:

------ - ------- ------------ - ---- ----------------
----- --- - -- -- -
  ----- -------- - ---------------
  ----- ------------- - -- -- -
    ---------------- -- --- ---
  --
  ------ -
    -------------- ----------------------- -------------------
      ----- ---
    ----------------
  --
--

上述代码中,handleOnClick 函数实现了点击按钮 div 元素向右移动的效果,控制效果的在一开始创建了一个 useAnimation() 的对象,当点击之后通过对象的 start() 方法来控制 div 的暂停和开始。

  1. useDrag/useMotionValue

与 useAnimation 相似,useDrag 和 useMotionValue 组件是 Framer-motion 包提供的更灵活的动画控制组件,其中 useMotionValue 提供了一段平滑值的存储和动态修改,而 useDrag 可以控制一个 div 随拖动进行一些巧妙的控制。如下代码演示了拖拽一个 div 元素的过程:

------ - -------- - ---- --------
------ - ------- --------------- ------- - ---- ----------------
----- --- - -- -- -
  ----- ------------ -------------- - ----------------
  ----- - - ------------------
  ----- - - ------------------
  ----- ------------ - ---------
    ------------ -- -- --------------------
    ---------- -- -- ---------------------
    ------- ------- -- -
      ----------------------
      ----------------------
    --
  ---
  ------ -
    -----------
      -----------
      -----
      -----
      ---------- ------ ---------- - --- - - --
      ------------- --------- --- --
      ------------------ ----- -- ---- -- ------ ---- ------- --- --
      -----------------
    -
      ---- ---
    -------------
  --
--

上述代码中,我们实现了一个能够拖拽的 div 元素,该元素拖拽后能保存其状态并进行过渡动画。

示例代码

最后,我们来看一下一段应用 framer-motion 制作的 FlipCard 组件的示例代码,具体实现的效果如下图:

------ - -------- - ---- --------
------ - ------- --------------- - ---- ----------------

----- -------- - -
  -------- - -------- - --
  ------- - -------- --- --
--

----- -------- - -- ------ ---- -- -- -
  ----- ----------- ------------- - ----------------
  ----- ------------- - -- -- -
    -------------------------
  --
  ------ -
    ---- --------------------- ------------------------
      ---------------- --------------- ----------------
        -----------
          ---------------------------
          -------------- - ------ - --------
          -------------------
          ------------------ - -------- - ----------
          -------------
        -
          -------
        -------------
        -----------
          ---------------------------
          -------------- - ------- - -------
          -------------------
          ------------------ - --------- - ---------
          -------------
        -
          ------
        -------------
      ------------------
    ------
  --
--

------ ------- ---------

上述代码中,我们通过创建一个 FlipCard 组件以及 front 和 back 的传递参数来实现一个美观的卡片翻转效果。

总之,Framer-motion 是一个非常实用的 React 动画库,它支持许多功能丰富、易于实现和灵活的动画工具,在大型项目开发中非常实用。希望这篇文章能够帮助你了解 Framer-motion 的使用和实现方式,同时也能给你带来更好的动画制作体验和控制。

来源:JavaScript中文网 ,转载请联系管理员! 本文地址:https://www.javascriptcn.com/post/5ef99048403f2923b035b9e6


猜你喜欢

  • npm 包 Docular 使用教程

    前言 在前端开发中,我们经常会使用各种第三方库和框架。而 npm 是现在最受欢迎的 JavaScript 包管理工具之一,可以让我们方便地安装、升级、删除和搜索 JavaScript 包。

    4 年前
  • npm 包 docular-ng-plugin 使用教程

    简介 docular-ng-plugin 是一个基于 Node.js 平台的 npm 包,它提供了在 AngularJS 项目中生成文档的功能。使用 docular-ng-plugin 可以方便地为 ...

    4 年前
  • npm 包 docular-markdown-plugin 使用教程

    docular-markdown-plugin 是一个用于生成静态站点的文档生成器插件,它可以将 markdown 文档转换为 HTML 格式,并提供一些自定义主题和样式。

    4 年前
  • npm 包 grunt-docular 使用教程

    在现代的 Web 前端开发中,文档是非常重要的一环。在我们开发过程中,我们需要方便地查找已有的文档,并且可以在项目中生成文档,这样才能让我们更好地管理项目并加速开发。

    4 年前
  • npm 包 eslint-config-enough 使用教程

    在前端开发中,代码质量是非常重要的一个方面。为了确保代码规范、代码质量和代码可读性,我们需要使用一些好用的代码质量工具。其中一个非常好的工具就是 ESLint,它是一个开源的 JavaScript 代...

    4 年前
  • npm 包 query-selector 使用教程

    介绍 query-selector 是一个可以在浏览器和 Node.js 环境中使用的 npm 包。它的作用是让我们能够使用像 CSS 选择器一样的语法来查找 HTML 元素,非常方便实用。

    4 年前
  • 使用 webpack-partial 对 npm 包进行代码优化

    在前端开发中,我们经常需要使用第三方 npm 包来快速构建应用,但这些包往往会带来代码冗余和加载速度变慢等问题,因此我们需要进行代码优化。本文将介绍使用 webpack-partial 工具对 npm...

    4 年前
  • npm 包 bullseye 使用教程

    前端开发中有很多常用的工具库,npm 包 bullseye 是一个轻量级的 CSS 工具库,它提供简单而强大的 API,可以快速开发各种 UI 组件,比如按钮、标签、表单等。

    4 年前
  • npm 包 style-attr 使用教程

    在开发前端应用时,我们常常需要在特定元素上添加样式。虽然可以直接在 HTML 元素上使用 style 属性添加内联样式,但这种方式会让代码显得凌乱,可维护性也很差。

    4 年前
  • npm 包 sell 使用教程

    什么是 npm 包 sell? sell 是一个基于 React 的网上商城模板,它包含多个组件,并且具有良好的可扩展性。使用者可以通过安装并自定义 sell,快速搭建自己的网上商店。

    4 年前
  • npm 包 rcolor 使用教程

    前言 在 web 开发中,我们经常需要使用颜色值来实现网站的各种效果。有时,我们需要一些随机的颜色值,比如用于数据可视化中的柱状图、折线图、饼图等。这时,npm 包 rcolor 可以为我们提供帮助。

    4 年前
  • npm 包 run-headless-chromium 使用教程

    使用 headless 环境,是一种新的前端开发方式,该环境能够模拟截图、爬虫、测试等操作,以提高开发效率。要使用 headless 环境,我们需要使用一个 nodejs 模块,那就是 run-hea...

    4 年前
  • npm 包 sinon-qunit 使用教程

    在前端开发中,单元测试是很重要的一环。而 sinon-qunit 是一个非常优秀的单元测试工具,它结合了 sinon 和 QUnit,能让我们更加高效地进行单元测试。

    4 年前
  • NPM 包 Gulp-TestCafe 使用教程

    在前端开发中,我们常常需要对网站进行测试。而 TestCafe 是一款帮助我们进行自动化网站测试的工具。但是,TestCafe 的配置和使用对于一些不熟悉命令行的开发者来说会存在一定的难度。

    4 年前
  • npm 包 gulp-compile-handlebars 使用教程

    介绍 在前端开发中,我们经常需要处理大量的 HTML 模板。gulp-compile-handlebars 是一个方便的 npm 包,可用于编译 Handlebars 模板文件,生成最终的 HTML ...

    4 年前
  • npm 包eslint-plugin-jasmine-jquery使用教程

    引言 在前端开发中,为了保证代码的正确性和可读性,我们经常需要进行代码检查。而 ESLint 是目前最为流行的 JavaScript 代码检查工具之一。在前端开发中,我们经常使用的 JavaScrip...

    4 年前
  • npm 包 broccoli-pegjs-import 使用教程

    前言 在前端开发中,我们经常需要处理一些文本,例如解析 JSON 数据,开发语言相关的编译器等。PEG(Parsing Expression Grammar,解析表达式语法)是一种基于上下文无关文法的...

    4 年前
  • npm 包 @invisible/grammar 使用教程

    前言 前端如今是一个非常流行的领域,每天都有新的技术诞生,这让前端技术人员不断地学习新技术,以保持自己在这个领域的竞争力。其中,npm 是一个非常重要的工具,它可以方便地管理我们的项目所需的各种依赖。

    4 年前
  • npm 包 @invisible/changelog-update 使用教程

    随着项目规模的扩大,软件发布版本管理变得越来越重要。其中,CHANGELOG 是记录软件版本的常用方式之一。然而,手动维护 CHANGELOG 是一项繁琐的任务,特别是在团队协作开发中。

    4 年前
  • `@invisible/eslint-config`使用教程

    在前端开发中,eslint是一种非常常见且重要的工具,它可以帮助我们检查代码中的潜在问题,规范我们的代码风格,提高代码的质量和可维护性。而@invisible/eslint-config是在eslin...

    4 年前

相关推荐

    暂无文章