Motion by meaning
Tears roll down
Sad or movedFalls 70%, splats on landing and vanishes, forever.
- Duration
- 1.2s
- Repeats
- Yes
- Easing
- ease-in
- Animates
- Position · Scale · Opacity translate scale opacity
Show CSS
@keyframes onoma-poroporo {
0% { transform: translate(0%, -70%) scale(0.9, 1.1); opacity: 0; }
12% { transform: translate(0%, -58%) scale(0.9, 1.1); opacity: 1; }
70% { transform: translate(0%, 0%) scale(0.9, 1.1); opacity: 1; animation-timing-function: ease-out; }
80% { transform: translate(0%, 0%) scale(1.3, 0.6); opacity: 1; }
92% { transform: translate(0%, 0%) scale(1.4, 0.3); opacity: 0; }
100% { transform: translate(0%, 0%) scale(1.4, 0.3); opacity: 0; }
}
.onoma-poroporo {
animation: onoma-poroporo 1.2s ease-in infinite both;
transform-origin: 50% 100%;
}
/* Reduced motion: no motion */
@media (prefers-reduced-motion: reduce) {
.onoma-poroporo { animation: none; }
}Crumble away
Break an item awayTrembles, then crumbles 140% downward and disappears.
- Duration
- 0.8s
- Repeats
- No
- Easing
- ease-in
- Animates
- Position · Rotation · Opacity translate rotate opacity
Show CSS
@keyframes onoma-poroporo-2 {
0% { transform: translate(0%, 0%) rotate(0deg); opacity: 1; }
8% { transform: translate(-2%, 0%) rotate(0deg); opacity: 1; }
16% { transform: translate(2%, 0%) rotate(0deg); opacity: 1; }
24% { transform: translate(-1.5%, 0%) rotate(0deg); opacity: 1; }
32% { transform: translate(0%, 0%) rotate(0deg); opacity: 1; }
80% { transform: translate(0%, 98.82%) rotate(12.71deg); opacity: 1; }
100% { transform: translate(0%, 140%) rotate(18deg); opacity: 0; }
}
.onoma-poroporo-2 {
animation: onoma-poroporo-2 0.8s ease-in both;
}
/* Reduced motion: only fade out */
@keyframes onoma-poroporo-2-fade { from { opacity: 1; } to { opacity: 0; } }
@media (prefers-reduced-motion: reduce) {
.onoma-poroporo-2 { animation: onoma-poroporo-2-fade 0.2s ease-out both; }
}Compare with similar motions