stylex.viewTransitionClass
Creates a set of ::view-transition
pseudo-element rules tied to a single class name which can be utilized for customizing the animations in a View Transition.
The styles that viewTransitionClass
accepts don't currently support media queries but adding support for them is a planned enhancement.
type ViewTransitionClassOptions = Readonly<{
group?: RawStyles,
imagePair?: RawStyles,
old?: RawStyles,
new?: RawStyles,
}>;
function viewTransitionClass(options: ViewTransitionClassOptions): string;
The options object the viewTransitionClass
function takes in accepts the following keys which map to a corresponding View Transition pseudo-element:
group
->::view-transition-group(*.theGeneratedClass)
imagePair
->::view-transition-image-pair(*.theGeneratedClass)
old
->::view-transition-old(*.theGeneratedClass)
new
->::view-transition-new(*.theGeneratedClass)
This method returns the generated class name as a string which can be added manually to the elements you want animations customized for, or if you're using React can be passed into the experimental <ViewTransition />
component.
Example use:
import * as stylex from '@stylexjs/stylex';
import { unstable_ViewTransition as ViewTransition } from 'react';
const lingeringOldView = stylex.viewTransitionClass({
new: {
animationDuration: '1s',
},
old: {
animationDuration: '2s',
},
});
<ViewTransition default={lingeringOldView}>
{/* ... */}
</ViewTransition>
viewTransitionClass
calls can also accept keyframes
output to customize the animations even further:
import * as stylex from '@stylexjs/stylex';
const fadeInUp = stylex.keyframes({
from: {
opacity: 0,
transform: 'translateY(-30px)'
},
to: {
opacity: 1,
transform: 'translateY(0px)'
},
});
const transitionCls = stylex.viewTransitionClass({
new: {
animationName: fadeInUp,
},
});