UNPKG

@smui/common

Version:
91 lines (67 loc) 3.7 kB
# Svelte Material UI - Animation Material in motion is responsive and natural. Use these easing curves and duration patterns to create smooth and consistent motion. # Design https://m2.material.io/design/motion/understanding-motion.html # Usage ## Sass Variables We provide timing functions which you can use with the `animation` or `transition` CSS properties ```scss @use '@smui/common/animation'; .my-element--animating { animation: foo-keyframe 175ms animation.$standard-curve-timing-function; } ``` | Variable | Description | | ------------------------------------- | ----------------------------------------------------------- | | `$deceleration-curve-timing-function` | Timing function to decelerate | | `$standard-curve-timing-function` | Timing function to quickly accelerate and slowly decelerate | | `$acceleration-curve-timing-function` | Timing function to accelerate | | `$sharp-curve-timing-function` | Timing function to quickly accelerate and decelerate | The following functions create transitions given `$name` and the `$duration`. You can also specify `$delay`, but the default is 0ms. `$name` can either refer to the keyframe, or to CSS property used in `transition`. ```scss @use '@smui/common/animation'; .my-element { transition: animation.exit-permanent( /* $name: */ opacity, /* $duration: */ 175ms, /* $delay: */ 150ms ); opacity: 0; will-change: opacity; &--animating { transition: animation.enter(/* $name: */ opacity, /* $duration: */ 175ms); opacity: 1; } } ``` ```scss @use '@smui/common/animation'; @keyframes fade-in { from { transform: translateY(-80px); opacity: 0; } to { transform: translateY(0); opacity: 1; } } .my-element { animation: animation.enter(/* $name: */ fade-in, /* $duration: */ 350ms); } ``` | Function | Description | | ------------------------------------------ | ---------------------------------------------------- | | `enter($name, $duration, $delay)` | Defines transition for entering the frame | | `exit-permanent($name, $duration, $delay)` | Defines transition for exiting the frame permanently | | `exit-temporary($name, $duration, $delay)` | Defines transition for exiting the frame temporarily | ## JavaScript These functions handle prefixing across various browsers ```js import { getCorrectEventName } from '@smui/common/animation'; const eventToListenFor = getCorrectEventName(window, 'animationstart'); ``` | Method Signature | Description | | --------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | | `getCorrectEventName(windowObj: Window, eventType: StandardJsEventType) => StandardJsEventType \| PrefixedJsEventType` | Returns a JavaScript event name, prefixed if necessary. See [`types.ts`](types.ts) for supported values. | | `getCorrectPropertyName(windowObj: Window, cssProperty: StandardCssPropertyName) => StandardCssPropertyName \| PrefixedCssPropertyName` | Returns a CSS property name, prefixed if necessary. See [`types.ts`](types.ts) for supported values. |