npm 包 @gustavnikolaj/frame-popper 使用教程

前言

在开发现代 Web 应用程序时,响应式和动态 UI 经常是一个如何解决的问题。随着我们的应用程序变得越来越复杂,实现这一点的最佳方法往往难以找到。 不久前,我在 npm 包中发现了一种解决方案,叫做 @gustavnikolaj/frame-popper,它是一个小型工具,在 UI 布局、交互性和动态性方面提供了很大的帮助。 在本文中,我将向您介绍如何使用这个工具,并提供一些示例代码来帮助您了解如何在您的应用程序中使用它

简介

@gustavnikolaj/frame-popper 是一个 JavaScript 库,用于在 Web 应用程序中动态定位和对齐元素。它基于 Popper.js 库,但针对 iframe 和其他复杂布局进行了优化。该库的主要功能包括:

  • 对于任何包含文本、图片或表格的 DOM 元素,动态的根据指定参考元素的位置,算出要在什么位置显示该元素,以及该元素与参考元素的对齐方式。
  • 以及可选的其他配置选项,例如自定义进入/离开动画效果以及基于感应器的位置修复机制。

安装

要在您的应用程序中使用 @gustavnikolaj/frame-popper,您需要做以下两件事:

第一步:安装库

可以使用 npm 或 yarn 安装 @gustavnikolaj/frame-popper :

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

或者使用 yarn:

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

第二步:将库添加到您的代码中

您可以在 React 或 Vue 中轻松使用 @gustavnikolaj/frame-popper,但它也适用于任何编写 JavaScript 的 Web 应用。从您的代码中按如下方式导入库:

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

用法

@gustavnikolaj/frame-popper 的使用非常简单,您可以根据需要配置一些选项。 我们将在下面的例子中讲述每一个不同的选项。

基本使用

以基础示例开始。 我们将创建一个包含一个链接和一个 div,当光标悬停在链接上时,它们将通过 @gustavnikolaj/frame-popper 对齐和定位。 我们需要在 React 中使用 @gustavnikolaj/frame-popper 作为可调用元素,并引用虚拟 DOM 中的链接和 div。

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

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

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

在这个例子中,我们将 FramePopper 组件的 target 属性设置为链接的 ref 对象,这意味着链接本身将成为 FramePopper 在其下方显示的气泡的参考元素; placement 属性确定气泡应放置在参考元素的上方或下方; 最后,我们在内部定义要在气泡中显示的内容,并将其传递给 FramePopper。

根据内容自动设置大小

默认情况下,@gustavnikolaj/frame-popper 将气泡大小设置为与目标元素相同的大小。但有时您希望气泡的大小根据气泡内的内容自动调整大小。通过给组件传递 allowAutoSizing={true} 属性,可以轻松启用此行为

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

在这个例子中,气泡将基于其内容自动调整大小,从而使其完全包含要在其中显示的文本和元素。

使用观察器进行定位修正

尽管@gustavnikolaj/frame-popper 会自动将元素定位在其参考元素的附近,但在复杂的布局中,有时可能需要调整这些位置。 对于这种情况,您可以使用 observers 配置选项,该选项允许您定义一个观察器函数,该函数将在组件每次重新渲染时运行,以对气泡的位置进行微调:

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

在这个例子中,我们定义了一个观察器函数的数组,该数组包含一个“ dom”观察器,它会观察窗口,并在每次重新渲染组件时运行。 该观察器将其当前的位置和偏移量传递给一个回调函数,该回调函数可以对气泡位置进行微调并返回新的偏移量。 在这个例子中,我们简单地将原始偏移量返回回来,但您可以根据需要更改它。

配置动画效果

默认情况下,@gustavnikolaj/frame-popper 并不会提供任何动画效果以平滑地过渡气泡的进入或离开。您可以通过提供 Enter/Leave 动画类或者回调函数来配置动画效果来使其更加平滑。

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

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

在这个例子中,我们使用 animate 配置属性,通过传递一个进入/离开类的字符串来启用淡入/淡出动画。 animate 属性可以接受三种类型的值:

  1. 一个字符串容器,由空格分隔的 enter 和 leave 类,以适用于所有组件的总动画效果。
  2. 两个类名的 Function 以返回值在需要的时刻应用新效果,第一个参数的对象包含以下属性:
    • showing表示组件是否现在是显示的
    • inPlace表示组件是否已经正确定位,例如 如果该组件被重新挂接,则它可能不是正确定位
  3. 对象,它的 enterleave 属性都可以是字符串或者函数。

自定义弹出元素的样式

您可能需要在气泡中的元素中添加自定义样式,以使其更适合您的应用程序主题。使用 innerClassName 定义类名,然后将它们附加到您希望自定义的元素上即可

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

在这个例子中,我们通过 innerClassName 属性传递一个自定义 CSS 类名。 在 FramePopper 中使用类名时,它将自动应用于气泡包含的所有元素中,以便您可以定义要更改的样式属性。

结论

@gustavnikolaj/frame-popper 是一个小型但强大的工具,适用于现代 Web 应用程序中的布局和交互性问题。本文提供了一些有用的示例代码和技巧,以帮助您在自己的应用程序中使用此库。无论您是使用 React、Vue 还是原始 JavaScript 进行编写,使用 @gustavnikolaj/frame-popper 都可以大大加快开发速度,并提供您需要的布局和界面元素。

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


猜你喜欢

  • npm 包 multiprocess-map 使用教程

    简介 multiprocess-map 是一个 Node.js 的 npm 包,用于实现并发地执行大量的 CPU 密集型任务。采用多进程技术,提高计算机的利用率,加速执行速度,可以用于数据处理,图像处...

    4 年前
  • npm 包 mochallel 使用教程

    在前端开发中,测试是非常重要的一部分,而 mocha 是一个广泛使用的 JavaScript 测试框架。mochallel 是一个让测试并行化的组件,通过运行多个测试文件并行执行测试,从而提高测试效率...

    4 年前
  • npm 包 rollup-plugin-sucrase 使用教程

    简介 rollup-plugin-sucrase 是一个 Rollup 的插件,能够使用 Sucrase 进行项目代码的转换。Sucrase 是一个使用 Rust 语言编写的超快 JavaScript...

    4 年前
  • `assert-text` npm 包使用教程

    assert-text 是一个 Node.js 中常用的 NPM 包,它提供了一个简单的方式来测试字符串是否符合预期。本篇文章将介绍如何使用 assert-text 包进行前端开发中的测试。

    4 年前
  • npm 包 @goto-bus-stop/common-shake 使用教程

    前言 在项目中,我们时常会使用到一些公共的函数,而在项目中引用这些函数通常会造成代码冗余,降低代码的可维护性。此时,我们可以选择使用 npm 中的 @goto-bus-stop/common-shak...

    4 年前
  • npm 包 multisplice 使用教程

    在前端开发中,我们经常需要对数组进行增删改查等操作,而 JavaScript 中的数组方法是非常基础和常见的操作。然而,有时候我们需要在数组中进行多项删除,这时候就需要用到 npm 包 multisp...

    4 年前
  • npm 包 net-browserify-stub 使用教程

    在前端开发中,我们经常会用到 Node.js 的模块,但在浏览器端,我们无法直接使用 Node.js 的模块。为了解决这个问题,有一个很方便的工具:Browserify。

    4 年前
  • npm包 is-interactive 使用教程

    在前端开发中,我们经常需要判断当前运行的环境是否有控制台。比如当用户通过浏览器访问网页时,我们通常会输出一些调试信息到控制台,但是在没有控制台的情况下,这些信息就无法显示。

    4 年前
  • npm 包 @snyk/gemfile 使用教程

    前言 前端开发者们,你们是否有遇到过某个 npm 包因为在被使用的软件包中存在(潜在)的漏洞而使部署产生问题的情况呢?如果有,那么今天介绍的这个 npm 包——@snyk/gemfile 就非常适合你...

    4 年前
  • npm 包 @snyk/inquirer 使用教程

    介绍 @snky/inquirer 是一个基于 Node.js 的交互式命令行工具,方便地从用户那里收集输入。它是 inquirer.js 的一个扩展,能够通过调用 snyk.io 的 API 检查依...

    4 年前
  • npm 包 @snyk/ruby-semver 使用教程

    在前端开发中,我们经常需要处理版本号,而对于使用 Ruby 的开发者来说,可能会用到 Rubygems,这时就需要使用 snyk 的 @snyk/ruby-semver 包来处理 Rubygems 的...

    4 年前
  • npm 包 @snyk/cocoapods-lockfile-parser 使用教程

    简介 CocoaPods 是使用 Objective-C 和 Swift 进行 iOS 应用程序开发的最流行的依赖管理器。当 CocoaPods 安装这些依赖项时,它将生成一个名为 Podfile.l...

    4 年前
  • npm 包 @snyk/snyk-cocoapods-plugin 使用教程

    在 iOS 应用开发中,CocoaPods 是一个非常流行的依赖管理工具。它可以方便的管理应用的各种依赖库,同时也提供了一些方便的功能,比如快速安装、更新以及处理依赖包冲突等等。

    4 年前
  • npm 包 @types/needle 使用教程

    在前端开发中,所涉及的技术栈极为丰富,其中 NPM 包管理工具则是必不可少的一种。针对前端开发中的 RESTful API 服务进行请求,一个好的请求库也是必不可少的,而 needle 就是一个非常好...

    4 年前
  • npm包@juliangruber/tap-finished的使用教程

    引言 在前端开发过程中,我们常常需要对 JavaScript 代码进行测试以确保其可靠性和稳定性。在这个过程中,往往会使用到 tap 测试框架,因为它具有灵活、简单和易于使用等优点。

    4 年前
  • npm 包 pubsub 使用教程

    在前端开发中,通常我们需要实现不同组件之间的通讯功能。对于这种情况,pubsub 是一个非常实用的解决方案。本文将介绍 npm 包 pubsub 的使用教程,并提供详细的示例代码。

    4 年前
  • npm 包 parse-env-string 使用教程

    在前端开发工作中,环境变量的管理是非常重要的,我们需要将开发环境(dev)、测试环境(test)、生产环境(prod)等不同环境下的变量值分别配置,并在不同环境中正确获取对应的变量值。

    4 年前
  • npm 包 w3c-xmlserializer 使用教程

    前言 w3c-xmlserializer 是一个在 Node.js 和浏览器中序列化 XML 的 npm 包,它可以将文档对象模型 (DOM) 转换为字符串表示形式,可以用于从 DOM 中创建 XML...

    4 年前
  • npm 包 Component-ls 使用教程

    npm 是 Node.js 的包管理器,在前端开发中非常重要。本文将介绍一个叫做 component-ls 的 npm 包,具体使用方法以及总结一些学习和指导意义。

    4 年前
  • npm 包 @lerna/add 使用教程

    什么是 @lerna/add? @lerna/add 是一个 npm 包,用于添加依赖项到 Lerna 项目的 packages 中。Lerna 是一个管理跨多个包的 JavaScript 代码库的工...

    4 年前

相关推荐

    暂无文章