DEV Community

Cover image for 12 CSS Best Practices by Twitter

12 CSS Best Practices by Twitter

Pritam Patil
Frontend developer - loves CSS
・Updated on ・2 min read
  1. When grouping selectors, keep individual selectors to a single line.single-line-selectors

  2. Don't prefix property values with a leading zero.

  3. Lowercase all hex values and use shorthand hex values whenever possible.shorthand-hex

  4. Avoid specifying units for zero

  5. Related property declarations should be grouped together following the order: position, box-model, typography, visual. misc.declaration-order

  6. Don't use !important - It is a last resort generally and only use when you need to override something and there is no other way. Instead increase the specificity of the

  7. When a rule set includes only one declaration, consider removing line breaks for readability and faster editing.single-declare-no-line-break

  8. Limit shorthand declaration usage to instances where you must explicitly set all available values.shorthand-declare-limit

  9. Ensure your code is descriptive, well commented and approachable by others. Great code comments convey context and/or purpose.good-comments

  10. Class names:
    a. Keep them lowercase and use dashes to separate words
    b. Avoid excessive shorthand notation. (.btn is fine, .s is not)
    c. Use meaningful names: use structural or purposeful names over presentation.
    d. Prefix classes based on the closest parent or base class.classname-rules

  11. Selectors:
    a. Use classes over generic element tag for optimum rendering performance.
    b. Avoid using several attribute selectors (e.g. [class^="..."]) on commonly occurring components. Browser performance is known to be impacted by these.
    c. Keep selectors short and strive to limit the number of elements in each selector to three names over presentational.selector-rules

  12. Place media queries as close to their relevant rule sets whenever


Follow me on twitter or Github.

Discussion (10)

leanderd profile image
Leander Dirkse

Just want to let you know that #3 is not lowercase in the image.
And while I agree with the tips (and I have been doing it like this for a long time already), I also agree with Massimo. It would be good to explain why.

Another tip: there are also linters available that can help you with sticking to a specific style. Like stylelint.

pritampatil profile image
Pritam Patil Author

Thanks for pointing out the issue. Updated it!

ayabouchiha profile image
Aya Bouchiha

Amazing article !

pritampatil profile image
Pritam Patil Author

Thank you Aya!

wadecodez profile image
Wade Zimmerman • Edited

#2 is surprising because leading zeros enhance readability. What is the reasoning behind no leading zero?

pritampatil profile image
Pritam Patil Author

In that case honestly I don't think there is much difference between one and the other. It comes down to personal/team preference. Remember these are just guidelines/best practices followed by a specific team.

Some comments have been hidden by the post's author - find out more