Taste has reasons
Compare variants, pick one, and name why: easing, timing or properties.
Emil Kowalski@emilkowalskiMost animations don't feel off because of the code. They feel off because of the decisions behind them: the easing, the timing, or the properties you chose to animate.
Emil Kowalski@emilkowalskiGreat animations aren't magic. Almost every taste decision has a logical reason, the course teaches you those reasons.
Emil Kowalski@emilkowalskiI often ask my coding agent to come up with a few different variants and add a switcher so I can easily swap between them.
Emil KowalskiDeveloping taste…it’s a trained instinct. The ability to see beyond the obvious and recognize what elevates.
From emil-design-eng, “Taste is trained, not innate”.
Pick one, say why
Play both, pick one, name the difference, then reveal.
A?
hiddenB?
hidden/* revealed after you answer */
Switch variants, share a link
Pick a variant (or press 1–4), then copy the link.
CompareBaseline
ChosenChosen
const VARIANTS = {
c: { props: "opacity, transform", dur: "200ms", ease: "var(--ease-out)", from: "scale(0.95)" },
d: { props: "opacity, transform", dur: "200ms", exit: "120ms", ease: "var(--ease-out)",
from: "scale(0.95)", origin: "top left" },
};
const params = new URLSearchParams(location.search);
let current = params.get("v") in VARIANTS ? params.get("v") : "d";
function choose(key, why) {
current = key;
params.set("v", key);
if (why) params.set("why", why);
history.replaceState(null, "", `?${params}`);
apply(VARIANTS[key]);
}
.popover {
opacity: 0; transform: scale(0.95); transform-origin: top left;
transition: opacity 120ms var(--ease-out), transform 120ms var(--ease-out);
}
.popover.open {
opacity: 1; transform: none;
transition-duration: 200ms;
}
Why it matters, pros and cons
Why it matters
Motion feels off because of decisions, not code. A named reason transfers.
Pros
- Side by side reveals hidden differences.
- Named reasons become reusable rules.
- A URL switcher makes preference checkable.
Cons
- Building variants costs time for rarely seen motion.
- Some calls have no formula and stay trial and error.
- Delete the switcher before shipping.