Skip to main content

Adding Page Transitions with gatsby-plugin-transition-link

本指南将介绍如何使用gatsby-plugin-transition-link为Gatsby网站上的页面之间gatsby-plugin-transition-link设置动画.

Overview

TransitionLink组件提供了一种通过Link组件上的道具描述页面过渡的方法. 它可以与许多动画库一起使用,例如react-posegsapanimejs和其他许多库.

请注意,当前,由于该插件基于链接导航,因此不支持使用浏览器按钮进行导航时的转换.

For other page transition options, see the overview on adding page animations.

Getting started

首先,安装插件:

确保将插件添加到您的gatsby-config.js

最后,在要使用它的任何位置导入TransitionLink组件:

Predefined transitions

您可以使用AniLink组件添加页面过渡,而不必定义自己的自定义过渡. 它是TransitionLink的包装,提供了4个预定义的过渡: fadeswipecoverpaintDrip . 您可以在此演示站点上预览它们.

要使用AniLink,您需要安装gsap动画库:

然后,导入AniLink组件:

最后,确保提供所需的动画名称作为AniLink的空白道具:

过渡持续时间,方向等选项可以通过道具进行自定义. 有关更多详细信息,请参见AniLink文档 .

Custom transitions

您可以通过两种主要方法来创建页面过渡:

  1. 使用exit / entry道具中定义的trigger功能. 在" 使用trigger功能 "小节中有更多详细信息.
  2. 使用TransitionLink传递的道具来定义您的转场. " 使用传递的道具 "小节中提供了更多详细信息.

另外,您可以在TransitionLink组件上指定许多道具和选项,例如lengthdelay等. 有关更多选项和详细信息,请参见TransitionLink的文档 . 有关用法的更多示例,请访问插件的GitHub存储库.

Using the trigger function

您可以指定一个trigger函数来处理动画. 这对于诸如animejsGSAP的 命令性动画库很有用,这些函数库通过函数调用指定了动画.

Using passed props

过渡中涉及的退出和进入页面/模板将接收指示当前过渡状态的道具,以及在TransitionLink上定义的exitenter道具.

您可以将这些道具与基于状态的声明性动画库(如react-posereact-spring)结合使用,以指定用于退出和进入页面的过渡.

如果要在组件之一而不是页面/模板中访问这些道具,则应将组件包装在TransitionState组件中. 该组件具有可以访问与上述相同道具的功能,然后可以在组件中使用.

这是一个使用TransitionStatereact-pose触发Box组件的输入/退出转换的示例.

现在, Box组件将知道作为其子级的页面是正在安装还是正在卸载,并将相应地淡入/淡出.

Excluding elements from page transitions

您可能希望页面上的元素在整个页面过渡期间都保持不变( 例如,网站范围的标题 ). 这可以通过在gatsby-config.js使用以下插件选项将元素包装在持久性布局组件中来实现.

与往常一样,请查看安装文档以获取更多信息.

Further reading


Edit this page on GitHub
Docs
Tutorials
Plugins
Blog
Showcase

by  ICOPY.SITE