5 CSS Practices To Avoid as a Web Developer

Some bad habits and how to fix them

Some people think that CSS is difficult to learn. There are lots of crutches and even some magic, which makes it easy to shoot yourself in the foot. I feel sad about this since I don’t think so.

After some thought about what can be done, I’ve come up with five developer habits that I don’t like and will show you how to avoid them.

1. Set Margins or Padding and Then Reset Them

I often see people set margins or padding for all elements and then reset them for the first or last element. I don’t know why they use two rules when you can get by with one. It’s much easier to set margins and padding for all the required elements at once.

Use one of the following for simpler and more concise CSS: nth-child/nth-of-type selectors, the :not() pseudo-class, or the adjacent sibling combinator better known as +.

Do not do this:

You can use:

Or:

Or:

2. Add display: block for Elements With position: absolute or position: fixed

Did you know that you don’t need to add display: block for elements with position: absolute or position: fixed since it happens by default?

Also, if you use inline-* values, they will change as follows: inline or inline-block will change to block, inline-flex -> flex, inline-grid -> grid, and inline-table -> table.

So, just write position: absolute or position: fixed and add display only when you need flex or grid values.

Do not do this:

You can use:

O

3. Use transform: translate (-50%, -50%) To Center

There was a popular problem that used to cause a lot of trouble. This lasted until 2015, and all its solutions led to some kind of difficulties. I’m talking about centering an element with an arbitrary height along two axes.

In particular, one solution was to use a combination of absolute positioning and the transform property. This technique caused blurry text issues in Chromium-based browsers.

But after the introduction of flexbox, this technique, in my opinion, is no longer relevant. The thing is that it cannot solve the problem of blurry text. What’s more, it makes you use five properties. So, I would like to share a trick that can reduce the code to two properties.

We can use margin: auto inside a flex container and the browser will center the element. Just two properties and that’s it.

Do not do this:

You can use:

4. Use width: 100% for Block Elements

We often use flexbox to create a multi-column grid that gradually converts to a single column.

And to convert the grid to one column, developers use width: 100%. I don’t understand why they do it. The grid elements are block elements that can do this by default without using additional properties.

So we don’t need to use width: 100%, but rather we should write the media query so that flexbox is only used to create a multi-column grid.

Do not do this:

You can use:

5. Set display: block for Flex Items

When using flexbox, it is important to remember that when you create a flex container (add display: flex), all children (flex items) become blockified.

This means that the elements are set to display and can only have block values. Accordingly, if you set inline or inline-block, it will change to block, inline-flex -> flex, inline-grid -> grid, and inline-table -> table.

So, don’t add display: block to flex items. The browser will do it for you.

Do not do this:

You can use:

Conclusion

I hope I’ve managed to show you how to avoid simple mistakes and you will take my advice. Thanks for reading!

Happy Hacking!