banner

Let's be real here.

Is CSS that hard?

Even though being simple and uses the modern English language to name most of its properties like font size or color, it's not rare to get caught up in the style classes when you're working on a bigger and high-performance project.

Today, let us discuss 5 common CSS mistakes we all make.

1️⃣ AVOID MAGIC NUMBERS

A magic number is a numerical value that is used simply because it works. Never use numbers simply because they work.

In this case, it's preferable to use *top: 100% *, which roughly translates to 'all the way from the top.'

Don't do this

.dropdown-container
.dropdown-menu {

  margin-top: 47px;
}

Do this

.dropdown-container
.dropdown-menu  {

   top: 100%
}

2️⃣ Avoid mixing container with content styles

On isolated components, don't use location-dependent styles. A component should have the same appearance no matter where it is placed. Instead, for specialized use scenarios, use layout wrappers.

Don't do this

.form-input  {
   font-size: 14px;
   padding: 4px  8px;
   /*Content is mixed with container here*/
   margin-top: 20px;
}

Do this

.form-input-wrapper  {
   margin-topp: 20px;
}

.form-input  {
   font-size: 14px;
   padding: 4px  8px;
}

3️⃣ AVOID USING QUALIFIED SELECTORS

These are selections that are appended to an element unnecessarily. This is bad news because it completely prevents reusability on another element while also increasing specificity.

Don't do this

ul.nav  {}
a.button  {}
div.header  {}

Do this

.nav {}
.button {}
.header {}

4️⃣ AVOID USING ABSOLUTE VALUES FOR LINE-HEIGHT

To make lines more flexible, line heights should always be specified relative to one another. You want to know that if you change the font size of a h1, your line-height will keep up.

Don't do this

h1  {
   font-size: 24px;
   line-height: 32px;
}

.site-title  {
   font-size: 36px;
   line-height: 48px;
}

Do this

h1 {
   font-size: 24px;
   line-height: 1.333;
}

.site-title  {
    font-size: 36px;
}

5️⃣ AVOID LOOSE CLASS NAMES

Loose class names are awful because you can't tell what they're for by looking at them, and they're so general that another developer could simply redefine them.

Don't do this

.card {}
.modal {}
.user {}

Do this

.user-post-card {}
.confirmation-modal {}
.user-avatar {}

Thank you for reading

If you liked this post, subscribe to my newsletter to never miss out on my blogs, product launches, and tech news, and follow me on Twitter for daily threads on web dev resources.