组件
vueuse/motion 允许您直接在组件的模板中实现动画,而无需将目标元素包裹在任何额外的组件中。
这些组件的工作方式类似于指令 v-motion
的用法,但在使用服务端渲染的项目中效果更好。
<Motion>
在 <p>
元素上使用 motion 预设的 <Motion>
组件示例
<template>
<Motion is="p" preset="slideVisibleLeft">Text in Motion!</Motion>
</template>
向下滚动以触发 motion!
Motion 中的文本!
<MotionGroup>
<MotionGroup>
可用于将其 motion 配置应用于所有子元素,此组件默认无渲染,可以通过将值传递给 :is
prop 来用作包装器。
<template>
<MotionGroup preset="slideVisibleLeft" :duration="600">
<section>
<h3>Product 1</h3>
<p>Description text</p>
</section>
<section>
<h3>Product 2</h3>
<p>Description text</p>
</section>
<section>
<h3>Product 3</h3>
<p>Description text</p>
</section>
</MotionGroup>
</template>
向下滚动以触发 motion!
产品 1
描述文本
产品 2
描述文本
产品 3
描述文本
Props
<Motion>
和 <MotionGroup>
组件允许您将动画属性(变体)定义为 props。
is
:应该渲染什么元素(<Motion>
默认使用div
)。preset
:要使用的 Motion 预设(期望使用驼峰式字符串),请参阅预设。
变体 props
initial
:元素在挂载前将拥有的属性。enter
:元素在挂载后将拥有的属性。visible
:元素在视图中时将拥有的属性。一旦离开视图,将重新应用initial
属性。visible-once
:元素进入视图后将拥有一次的属性。hovered
:元素悬停时将拥有的属性。focused
:元素获得焦点时将拥有的属性。tapped
:元素被点击或触摸时将拥有的属性。
变体可以作为对象使用 :variants
prop 传递。
:variants
prop 与其他变体属性结合使用,允许从此对象定义自定义变体。
可以在变体页面上探索其他变体属性。
简写 Props
我们支持简写 props 以快速设置过渡属性
delay
duration
这些属性适用于 visible
、visible-once
或 enter
变体(如果指定);否则,它们默认为 initial
变体。
<template>
<Motion
:initial="{ opacity: 0, y: 100 }"
:enter="{ opacity: 1, y: 0, scale: 1 }"
:variants="{ custom: { scale: 2 } }"
:hovered="{ scale: 1.2 }"
:delay="200"
:duration="1200"
>
Content to animate!
</Motion>
</template>