@awesome-reveal/vue

中文文档
1.0.0发布于 2026/11/03MITTypeScriptES Module构建来源已验证近 30 天下载 1774

由网络动画API和Intersection Observator所建. Vue的回光相接相接动画.

中文使用文档
文档目录18 节
  1. 安装
  2. 快开始
  3. 使用量
  4. 选择入口
  5. 使用自己的键框
  6. 更改时间
  7. 打开列表
  8. 控制显示
  9. 在显示处运行代码
  10. API 密码
  11. <Reveal> , (中文(简体) ), <Cascade> , (中文(简体) ), v-reveal 财务报告和…
  12. 行为
  13. 样式表设置
  14. 服务器侧渲染
  15. 无障碍
  16. 很高兴知道
  17. 代理技能
  18. 许可证

@awesome-reveal/ veue (音乐)

(原始内容存档于2018-10-21). Reveal-on-scroll 动画为Vue. 环绕内容 <Reveal>,或添加 v-reveal 到一个元素,当它进入取景口时,它会淡出并滑入其中.

npm version License

Elements fade, slide, scale, blur and rotate in as the page scrolls

  • 很简单. 两个组成部分,两个指令, 和几个选项.
  • 原产地. 由Intersection Observer和Web Animations API所建,没有动画库.
  • SSR准备好了. 服务器发送的内容会一直被隐藏到它揭示,没有闪光.
  • 无障碍. 遵循减动偏好,并在焦点上并用平面显示等待内容.
  • CSP友好报. 写入无内线样式和无内线脚本.

与Vue 3.5及后作相通.

安装

npm install @awesome-reveal/vue

软件包自动加载其样式表。 只有一个 Astro岛 需要一个步骤.

快开始

<script setup lang="ts">
import { Reveal, vReveal } from "@awesome-reveal/vue";
</script>

<template>
  <Reveal><h1>Hello</h1></Reveal>
  <p v-reveal>No wrapper element</p>
</template>

内容在进入取景口时会逐渐淡出并向上移动一次.

使用量

Reveal 财务报告和审定财务报表 v-reveal 接受同样的选择. Reveal 制作一个 div 围绕它的槽 as 更改标签. v-reveal 动画一个您已经渲染的元素 .

选择入口

from 设置元素的起始位置。 一边会变淡 有24个px运动 默认是 "bottom"。 。 。 .

<template>
  <Reveal from="left">From the left</Reveal>
  <p v-reveal="{ from: 'right' }">From the right</p>
</template>

对于不同的出入口,给出一个起步状态. 元素动画从此状态到中性值:完全不透明,没有偏移,比例为1,不旋转和不模糊. 元素自身对动画属性的价值仅在入场后适用. 启动状态取代默认状态, 所以添加 opacity: 0 如果你想要一个淡出.

<template>
  <Reveal :from="{ opacity: 0 }">Fade only</Reveal>
  <Reveal :from="{ scale: 0.9 }">Scale only</Reveal>
  <Reveal :from="{ opacity: 0, x: '-100%', rotate: '-5deg', blur: 8 }">All together</Reveal>
</template>

启动状态有属性 opacity, (中文(简体) ), x, (中文(简体) ), y, (中文(简体) ), scale, (中文(简体) ), rotate 财务报告和审定财务报表 blur数字 x, (中文(简体) ), y 或者说 blur ,数字为 rotate 是度数。 一个字符串可以包含带有其单位的 CSS 值.

使用自己的键框

全面控制,如放宽习俗,给予土著 键框 改为 from。以元素的休息风格结束它们.

<template>
  <Reveal
    :keyframes="[
      { opacity: 0, transform: 'scale(.8)', easing: 'cubic-bezier(.34,1.56,.64,1)' },
      { opacity: 1, transform: 'scale(1)' },
    ]"
  >
    Bounce in
  </Reveal>
</template>

更改时间

<template>
  <Reveal as="h2" from="left" :duration="800">Title</Reveal>
  <Reveal :from="{ opacity: 0 }" :delay="200">Starts after the title</Reveal>
  <Reveal :threshold="0.5">Reveals when half of it is visible</Reveal>
</template>

保留 delay 低于约300毫秒。 长时间的延迟让内容在用户快速滚动时出现很晚.

打开列表

Cascade 财务报告和审定财务报表 v-cascade 当容器进入景点时,一个接一个地揭示直系子女. interval 设定两个孩子之间的时间,默认时间为80毫秒.

<script setup lang="ts">
import { Cascade, vCascade } from "@awesome-reveal/vue";
</script>

<template>
  <Cascade as="ul" from="left" :interval="120">
    <li>Fast</li>
    <li>Small</li>
  </Cascade>
  <ol v-cascade>
    <li>Install</li>
    <li>Import</li>
  </ol>
</template>

对于长列表,虚拟列表,或比取景端高的网格,使用 Reveal 或者说 v-reveal 每个项目。 级联同时安排所有的孩子,所以最后一个孩子开始晚或出视.

控制显示

when 控制你所在的入口. true 弹奏它,和 false 以无出局动画重置. 与 null 或没有值,取景器控制它。 变化 true 改为 null 保持元素显示.

when 不显示或隐藏内容。 与 when: false,元素是透明的,但屏幕阅读器读取它,键盘可以将它聚焦. inert 不隐藏内容:它只屏蔽焦点、点击和辅助技术。 要隐藏内容, 还设置 hidden,或使用 v-if数字 :

<script setup lang="ts">
import { ref } from "vue";
import { Reveal } from "@awesome-reveal/vue";

const open = ref(false);
</script>

<template>
  <button :aria-expanded="open" @click="open = !open">Toggle</button>
  <Reveal :when="open" :hidden="!open" :from="{ opacity: 0 }">Details</Reveal>
</template>

准备再次出场 when 改为 false,然后改为 true。 。 。 .

在显示处运行代码

Reveal 发射 reveal 与显示开始时的元素,并给出 revealed 切入默认位置. v-reveal 接受一个 onReveal 选项。 等待入口的结束,等待 finished 动画中的承诺:

<script setup lang="ts">
import { Reveal } from "@awesome-reveal/vue";

function entered(element: Element) {
  Promise.all(element.getAnimations().map((animation) => animation.finished))
    .then(() => element.classList.add("entered"))
    .catch(() => {});
}
</script>

<template>
  <Reveal v-slot="{ revealed }" @reveal="entered">
    {{ revealed ? "Hello" : "Waiting" }}
  </Reveal>
</template>

承诺在入口提前停止时拒绝,例如之后 when: false 或无所取出. 抓住拒绝。 当没有入口游戏时,例如减少运动时,它立即解决。 它也等待着您自己对元素的动画. 用于级联 getAnimations({ subtree: true })因为孩子们有活力 永远重复的动画永远不会完成,所以承诺是不会解决的.

API 密码

<Reveal>, (中文(简体) ), <Cascade>, (中文(简体) ), v-reveal 财务报告和审定财务报表 v-cascade

选项类型默认说明
as (仅包括构成部分)string"div"制成的标签
fromSide | StartState"bottom"入口的侧面或起始状态
keyframesKeyframe[]—— 说原生键框. 你不能一起使用它们 from
durationnumber600入口时间, 以毫秒计
delaynumber0入口之间的时间,以毫秒计
thresholdnumber0可见分数,从0到1,显示元素
whenboolean | null—— 说true 演奏出入口, false 再来一次
onReveal (仅指示)(element) => void—— 说运行一次每次曝光, 当它开始
interval (只装腔作势)number80两个孩子入口之间的时间, 以毫秒计

发射部件 reveal 与元素,给予 revealed ,然后将其他属性传递给已渲染的元素.

行为

  • 入门一回打. 观察止于出处.
  • 这个 reveal 事件和 onReveal 在没有入口播放时也会运行,例如减少动作或焦点. 之后 when: false下一次揭发会再次曝光.
  • 更改为 when 或者说 threshold 立即申请。 下一次披露时将适用对其他选项的更改.
  • when: false 期间 delay 重新设置出入口,出入口不播放.

样式表设置

软件包样式表隐藏服务器提交的内容,直到其披露为止. 软件包模块导入它, 您的捆绑器将其添加到页面中 。 Astro岛需要一步:Astro没有获得一个岛屿的CSS,所以在页面或布局中导入.

---
import "@awesome-reveal/vue/reveal.css";
---

服务器侧渲染

服务器标记被隐藏到元素显示为止 。 如果脚本失败,内容会在5秒后显示. 水合物急切地揭示出含量:懒惰的水合物,例如: hydrateOnVisible() 或 纳克特 hydrate-on-visible 组件,内容可以显示,然后再次隐藏,直到揭示.

无障碍

  • 与 prefers-reduced-motion: reduce,所有的内容立即显示,没有动画。 减少动议比入口优先 when: false,所以请 reveal 事件和 onReveal 别再跑了.
  • 在等待元素中的焦点立刻显示,所以键盘用户不会将隐性内容聚焦. 这不适用于 when: false。 。 。 .
  • 延迟或入口期间的注意力集中,立即完成入口.
  • 在脚本加载前,服务器标记显示同时它有焦点.
  • 等待内容显示为打印和JavaScript关闭时.
  • 隐藏的内容留在无障碍树上. 不要让重要内容依赖于装饰运动.

很高兴知道

丝带
  • 级联显示时会读取孩子 一个没有动画的显示后添加的孩子.
  • 只有直接元素儿童活跃。 文本与子类 display: contents 立即显示.
  • 不要在级联内直接显示 两个出入口融合在同一元素上.
  • A 类 <TransitionGroup> 作为直系儿童,在孩子们身上增加了自己的动画.
  • delay 移动整个序列的开始。 这个 reveal 事件和 onReveal 去拿货柜.
样式表如何隐藏内容
  • 服务器标记有 data-awesome-reveal="hidden",或 data-awesome-reveal="cascade" 为级联。 一揽子储备 data-awesome-reveal 财务报告和审定财务报表 data-awesome-reveal-attached。 。 。 .
  • 样式表在脚本附着元素前隐藏内容最多为5秒. 如果附件发生后,内容会显示,然后再次隐藏,直到揭示.
  • 样式表与 awesome-reveal-hold CSS 动画, 取代您自己的 animation 在等待中,直到它显现出来。 把自己的动画放在内在元素上. 守火场 animationstart 财务报告和审定财务报表 animationend 事件,并显示在 getAnimations()。 。 。 .
  • 内含 opacity 与 !important,或者你自己的 animation 与 !important,可以在披露前显示元素.
  • 样式表没有达到阴影根 .
  • 在没有 scripting 媒体功能,如Safari 16,内容在JavaScript关机后5秒后显示.
内容安全政策

软件包没有写 style 属性和无内行脚本。 类似政策 style-src 'self'; script-src 'self' 当您的捆绑者将软件包 CSS 作为文件发布时, 在生产架构中工作 .

入口详情

这个 @awesome-reveal/core README描述了入口如何运作,高而被剪取的内容的门槛,性能和出错. 读吧 无。 。 。 .

代理技能

软件包包括 adding-reveal-animations 技能,它教一个编码代理 API 。 Pnpm可以在你批准后将它链接到你的项目中.

许可证

麻省理工学院

版本与发布记录

@awesome-reveal/vue 共发布 16 个版本,首次发布于 2026/10/11;过去 12 个月发布了 16 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
1.0.0latest2026/11/035 天前
1.0.0-rc.02026/10/2316 天前
1.0.0-next.122026/10/2217 天前
1.0.0-next.112026/10/1821 天前
1.0.0-next.102026/10/1524 天前
1.0.0-next.92026/10/1524 天前

关于 @awesome-reveal/vue 的常见问题

@awesome-reveal/vue 是什么?

由网络动画API和Intersection Observator所建. Vue的回光相接相接动画.

如何安装 @awesome-reveal/vue?

在项目目录运行 npm install @awesome-reveal/vue,或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖:vue(^3.5.0)。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖,Yarn 需要手动安装。

@awesome-reveal/vue 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@awesome-reveal/vue 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

@awesome-reveal/vue 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js >=20.19.0。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

@awesome-reveal/vue 可以商用吗?

@awesome-reveal/vue 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@awesome-reveal/vue 的下载量有多少?

根据 npm 官方下载统计,@awesome-reveal/vue 在 2026/10/07 – 2026/11/05 这 30 天内被下载 1,774 次,日均约 59 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@awesome-reveal/vue 还在维护吗?

最新版本 1.0.0 发布于 2026/11/03(5 天前);至今共发布 16 个版本,其中过去 12 个月发布了 16 个;首次发布于 2026/10/11。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。