Dan Wilson documents a classic annoyance with transforms:
button { transform: translateY(-150%);
}
button:hover { /* will (perhaps unintentionally) override the original translate */ transform: scale(.8);
}
The native (and WET) solution is list the original transform again:
button:hover { transform: translateY(-150%) scale(.8);
}
Dan’s trick is to use custom properties instead. Set them all on the element right up front, then re-set them the :hover
state:
:root { --tx: 150%; --scale: 1;
}
button { transform: translateY(var(--tx)) scale(var(--scale));
}
button:hover { --scale: 0.8;
}
Cascading custom properties FTW.
Direct Link to Article — Permalink
Individual CSS Transform Functions is a post from CSS-Tricks