Transition Duration
Utilities for controlling the duration of CSS transitions.
| React props | CSS Properties |
|---|---|
transitionDuration={duration} | transition-duration: {duration}; |
Usage
Use transitionDuration={duration} utilities to control an element's transition-duration.
<x.button transition transitionDuration="instant"> Hover me </x.button> <x.button transition transitionDuration="fast-in"> Hover me </x.button> <x.button transition transitionDuration={700}> Hover me </x.button> <x.button transition transitionDuration="3s"> Hover me </x.button>
Responsive
To control an element's transition-duration at a specific breakpoint, use responsive object notation. For example, adding the property transitionDuration={{ md: 300 }} to an element would apply the transitionDuration={300} utility at medium screen sizes and above.
<x.div transitionDuration={{ md: 300 }} />
For more information about xstyled's responsive design features, check out Responsive Design documentation.
Customizing
Durations
If you'd like to customize your values for durations, use the theme.durations section of your theme.
// theme.js
export const theme = {
durations: {
// ...
instant: '100ms',
'fast-in': '250ms',
'fast-out': '200ms',
'slow-in': '300ms',
'slow-out': '250ms',
+ 'very-slow': '400ms',
},
}
If you don't want to customize it, a set of durations based on Google Material Design recommendations is already defined in default theme.
const defaultTheme = {
// ...
durations: {
instant: '100ms',
'fast-in': '250ms',
'fast-out': '200ms',
'slow-in': '300ms',
'slow-out': '250ms',
},
}
Styled bindings
Automatic
Using xstyled's styled, all transition properties defined are automatically bound to transition-property attribute:
import styled from '@xstyled/...' const Button = styled.button` transition-duration: fast-in; `
To learn more about styled syntax, read styled syntax documentation.
Manual
It is possible to manually bind a transition property using th.duration utility:
import styled from '...' import { th } from '@xstyled/...' const Switch = styled.radio` transition: opacity ${th.duration('instant')}; `
Hooks
Get a transition property in any component using useDuration hook:
Edit this page on GitHubimport { useDuration } from '@xstyled/...' function Button() { const duration = useDuration('fast-out') }