OnomaUI

hirari motion

hirari has 2 kinds of motion.

ひらり2 motionsOfficial

Motion by meaning

Drift and fall

Dismiss a card

Sways 4 times (width 35%, tilt up to 24°) while falling 260% and fading out.

Duration
1.2s
Repeats
No
Easing
ease-in-out
Animates
Position · Rotation · Opacity translate rotate opacity
Show CSS
@keyframes onoma-hirari {
  0% { transform: translate(0%, 0%) rotate(0deg); opacity: 1; animation-timing-function: ease-in-out; }
  25% { transform: translate(32.2%, 42.88%) rotate(22.08deg); opacity: 1; animation-timing-function: ease-in-out; }
  50% { transform: translate(-29.4%, 105.59%) rotate(-20.16deg); opacity: 1; animation-timing-function: ease-in-out; }
  75% { transform: translate(26.6%, 178.88%) rotate(18.24deg); opacity: 0.6; animation-timing-function: ease-in-out; }
  100% { transform: translate(0%, 260%) rotate(-7.2deg); opacity: 0; animation-timing-function: ease-in-out; }
}

.onoma-hirari {
  animation: onoma-hirari 1.2s ease-in-out both;
}

/* Reduced motion: only fade out */
@keyframes onoma-hirari-fade { from { opacity: 1; } to { opacity: 0; } }
@media (prefers-reduced-motion: reduce) {
  .onoma-hirari { animation: onoma-hirari-fade 0.2s ease-out both; }
}

Flutter

Flag / ribbon

Flutters up to 38° with its left edge pinned, forever.

Duration
1.4s
Repeats
Yes
Easing
ease-in-out
Animates
3D turn · Skew rotateY skewY
Show CSS
@keyframes onoma-hirari-flutter {
  0% { transform: perspective(300px) rotateY(0deg) skewY(0deg); }
  50% { transform: perspective(300px) rotateY(-38deg) skewY(-6deg); }
  100% { transform: perspective(300px) rotateY(11.4deg) skewY(4.2deg); }
}

.onoma-hirari-flutter {
  animation: onoma-hirari-flutter 1.4s ease-in-out infinite alternate both;
  transform-origin: 0% 50%;
}

/* Reduced motion: no motion */
@media (prefers-reduced-motion: reduce) {
  .onoma-hirari-flutter { animation: none; }
}

Compare with similar motions

Words for the same motion