frontend

When CSS Breaks: Debugging with Empathy

Thoughts from the intersection of code, craft, people, and progress.

Debugging CSS can be frustrating, but approaching it with empathy can make the process smoother.

Broken CSS is rarely the result of somebody setting out to create a specificity puzzle. Understanding the original constraint before changing the rule usually leads to a better fix, and avoids passing a slightly more elaborate puzzle to the next developer.

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.

The answer is rarely a universal rule. It is a way of looking at the decision clearly enough to choose on purpose.

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.

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.

The details will change from project to project. The underlying habit of paying attention travels well.