Karl Koch | On adding homepage delight
Briefly

Karl Koch | On adding homepage delight
"Springs as material The shelf uses a single spring config for every animated property: { stiffness: 200, damping: 24, mass: 1 }. I tried a bunch of values. Stiffer felt snappy but harsh; softer felt mushy. This sits in between, responsive enough that it doesn't lag behind your cursor, but soft enough that the motion has weight."
"Deflection When you hover a record, it lifts. Its siblings don't stay put but deflect away, as if you'd nudged them. The push falls off with distance: records further from the hovered one move less. The formula is simple - pushAmount = 16 / Math.max(1, Math.abs(distance) * 0.6) - but the effect is that the whole row breathes with you."
"Fast mouse sweeps across the shelf used to trigger a flicker of hovers. Annoying. I added velocity gating: if your cursor is moving faster than about 0.8 px/ms when it enters a record, we ignore the hover. You have to slow down to select something. It feels right. You're not supposed to accidentally land on a record when you're just passing through."
A music releases section was built as an interactive shelf component rather than a static grid, mimicking the physical experience of flipping through vinyl records. The component incorporates multiple craft decisions: spring physics with balanced stiffness and damping creates responsive yet weighted motion; deflection physics makes neighboring records move away when one is hovered, with the effect diminishing by distance; velocity gating prevents accidental hovers during fast cursor movements, requiring deliberate slowing to select items. These layered interactions combine to create a tangible, intentional user experience that reflects the personal nature of music curation.
Read at KEJK
Unable to calculate read time
[
|
]