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,
  },
});