Troubleshooting CSS

31 July 2019

If your CSS updates aren’t working as you expect, what’s the best way to troubleshoot it? It can be a bit of a rabbit hole, but here are 13 ways to check your CSS.

The checklist

1. Have you saved the file?

Seems obvious, but absolutely worth double checking.

2. Clear your cache

You’ll want to clear two, possibly three, caches: your site’s cache, your browser and your server cache (if you have one). You may not be aware of a server cache but some hosts, such as SiteGround and WPEngine, use server-level caching to speed up websites.

Clearing your cache is the browser equivalent of turning it off and on again.

3. Check for spelling/syntax errors

Is the selector spelt correctly? Is the punctuation and spacing correct in descendant selectors (i.e. is it nav.class instead of nav .class?

Another classic would be to forget to close the declaration, so your CSS looks like this:

p {
	color: #fff
	font-size: 1rem;
}

Notice how the color is missing the semicolon? That means the CSS file will read that code like this:

color: #ffffont-size: 1rem;

Urgh!

4. Does your rule appear in the inspector?

Does it have a line through it? If so, your selector needs to be more specific.

In Chrome’s DevTools, the Computed tab can show you what’s being rendered by the browser and the rules being applied to a specific element: really handy for tracking down inheritance and specificity issues.

5. Does the style you’re overriding have an !important in it?

Or is the style declared in the HTML element (e.g. <div style="color: #fff;">)? If so, you can only override that with another !important.

6. Is the element inheriting a default browser style?

This could be anything, so check the inheritance in the inspector.

7. Is the element wider/taller than you’d expected?

It might need box-sizing: border-box; applied to it so that the width and height are calculated based on the size of the border-box rather than the content box (the default).

8. Is it a browser incompatibility issue?

This is much less of an issue than it used to be, but worth checking if the issue is replicated in another browser. The website caniuse.com is a great tool to help with this as well.

9. Have you validated it?

If you’ve got this far and nothing has worked, it might be worth popping it into the CSS Validator to check it’s valid CSS. CSS Lint is another resource to check out that will give some additional feedback on what you’ve written.

10. Try replicating the CSS and basic HTML structure in a tool like Codepen

If it works there, but not in your site, you’re likely dealing with an issue of inheritance or specificity. This is especially likely if you’re using a framework or template.

More advanced checks

If the rule is shown in the inspector but it’s not taking effect, there’s probably something not quite right.

11. Have you applied the rule to the correct element?

Often things need to be applied to the parent element, especially things related to the display or position properties.

12. Does the element have the right value for display?

It’s always worth checking the display property, especially if it’s inline, inline-block or block. This might fix the issue, especially if you’re trying to apply a property that’s incompatible (or has no effect) when applied to the wrong one.

13. Can you actually apply that property to the element?

Not all properties can be applied to all elements. :visited is a good example of this, but there are lots of others.