frontend
Why CSS is Still the Best Tool for Layout
Thoughts from the intersection of code, craft, people, and progress.
Grid, flex, and custom properties do more than people think.
Modern CSS gives us layout tools designed for the job, yet it is still occasionally treated as an obstacle to work around. Grid, flexbox and custom properties can handle complex responsive interfaces cleanly when we let CSS make the decisions it understands best.
CSS rewards people who understand its model more than people who accumulate workarounds. The cascade, intrinsic sizing and modern layout tools solve a surprising number of problems once we stop fighting them.
This matters because small choices repeat. What feels harmless once can quietly become the normal way of working.
Prefer the thing that survives contact
Front-end work has a habit of looking simple from a distance. The browser then introduces real content, small screens, old devices, keyboard navigation and somebody using the product in a way nobody drew in the design file.
That is why I favour choices that are easy to inspect. Start with semantic HTML, let CSS do the layout work it was designed for, and add JavaScript where it creates genuine value. Cleverness is occasionally useful; legibility is useful every day.
The best front-end code does not show off. It makes the interface feel obvious.
A practical way to start
A few questions help me decide what to do next:
- Does this help the user or mostly impress the team?
- Will the choice still make sense under pressure?
- Can we describe the reason without hiding behind jargon?
None of those questions produces an automatic answer. They do make the trade-offs visible, which is usually the point where a team can stop arguing from instinct and start making a decision together.
The web is wonderfully forgiving, but users should not have to rely on that forgiveness. Build from sturdy foundations and the interesting parts become much easier to enjoy.
I do not always manage it perfectly. The aim is to make the better choice easier to recognise the next time it appears.