DEV Community

Cover image for Costly CSS Properties and How to Optimize Them
Duc Le
Duc Le

Posted on • Edited on

Costly CSS Properties and How to Optimize Them

Introduction

Some CSS properties are more costly than others in terms of performance. When used improperly, they can slow down your webpage and make it less responsive for your users. In this article, we’ll explore some of the most costly CSS properties and how to optimize them.

Box-Shadow

The box-shadow property is a popular way to add a shadow effect to an element, but it can be very costly in terms of performance. When used on a large number of elements or with a large blur radius, it can significantly slow down your webpage.

Here are some ways you can do to reduce the cost of box-shadow :

  • Use a smaller blur radius — A smaller blur radius will reduce the amount of processing required to render the shadow. Instead of using a large blur radius, try using a smaller value that still gives you the desired effect. Use a solid color instead of a gradient — A gradient box-shadow can be very costly in terms of performance. Instead of using a gradient, try using a solid color for your box-shadow.
  • Use the inset keyword for inner shadows — If you’re using box-shadow to create an inner shadow, use the inset keyword. This will improve the performance of your webpage because it doesn’t require rendering an extra layer.
  • Use the will-change property to improve performance when animating box shadows — If you’re animating box-shadow, use the will-change property to tell the browser that the box-shadow property will be changing. This will help the browser optimize the rendering of the animation.

Overall, optimizing the box-shadow property involves reducing the processing required to render the shadow. By using these techniques, you can create a box-shadow that looks great while minimizing the impact on your webpage’s performance.

Background Image

The background-image property is used to add an image to an element, but it can be very costly in terms of performance. Large images or a large number of images can significantly slow down your webpage.

To optimize the background-image property, you can use the following techniques:

  • Use smaller image file sizes
  • Use image compression techniques like JPEG or PNG optimization
  • Use image sprites to reduce the number of HTTP requests
  • Use lazy loading techniques to load images only when they are needed

Border-Radius

The border-radius property is used to create rounded corners on an element, but it can be very costly in terms of performance. When used on a large number of elements or with a large radius, it can significantly slow down your webpage.

To optimize the border-radius property, you can use the following techniques:

  • Use smaller border radius values
  • Use the border-image property instead of border-radius for complex border designs
  • Use SVG graphics for complex border designs

Transforms

The transform property is used to apply transformations to an element, such as rotation, scaling, or skewing. When used improperly, it can be very costly in terms of performance.

To optimize the transform property, you can use the following techniques:

  • Use 2D transforms instead of 3D transforms when possible
  • Use the will-change property to improve performance when animating transforms
  • Use hardware acceleration by using the transform-style: preserve-3d property

Filters

The filter property is used to apply visual effects to an element, such as blurring, color adjustment, or brightness. When used improperly, it can be very costly in terms of performance.

To optimize the filter property, you can use the following techniques:

  • Use simpler filter effects
  • Use the will-change property to improve performance when animating filters
  • Use hardware acceleration by using the transform-style: preserve-3d property

Original CSS code:

div {
  filter: blur(5px);
}
Enter fullscreen mode Exit fullscreen mode

Optimized CSS code:

div {
  filter: blur(1px);
  transform: translateZ(0);
}
Enter fullscreen mode Exit fullscreen mode

Explanation:

Instead of using a larger blur radius, we are using a smaller value of 1px. This reduces the amount of processing required to render the blur effect.

We are also adding a transform property with the translateZ(0) value. This creates a new layer for the element, which can help with GPU acceleration and improve performance.

By using this optimized CSS code, we can achieve the same visual effect while reducing the impact on our webpage’s performance.

Conclusion

By optimizing CSS properties like box-shadow, filter, and border-radius, we can improve our webpage’s performance. Techniques include using smaller values, simpler shapes, and creating new layers with the transform property. These optimizations help create webpages that look great and perform well.

P/s: Thumbnail Image from https://kinsta.com/ , please check the page out, It has a lot of cool articles

Top comments (6)

Collapse
 
edgarslv profile image
EdgarsLv

Any graphs on how these properties decrease performance?

Maybe we shouldn't use css at all for better performance/sarcasm/?

Collapse
 
vhoyer profile image
Vinícius Hoyer

Yeah, I was left with that same feeling haha

Collapse
 
anmolbaranwal profile image
Anmol Baranwal

We should definitely explore why performance decreases before learning how to optimize it.

Collapse
 
fruntend profile image
fruntend

Сongratulations 🥳! Your article hit the top posts for the week - dev.to/fruntend/top-10-posts-for-f...
Keep it up 👍

Collapse
 
ekaterina_pivkina profile image
Екатерина Пивкина • Edited

Hello Duc,
My name is Ekaterina, I am a PR-manager at SimbirSoft, an IT outsourcing company (simbirsoft.com/en/ ). We maintain a corporate blog on the Habr blogging platform, and highlight various topics for software developers: habr.com/ru/company/simbirsoft/blog/ .
We would like to translate to Russian and publish one of your articles: Clean Up Code Smells with Clean Code: TypeScript Edition blog.bitsrc.io/what-are-code-smell... . We find it very useful and would like to share your expertise with our readers. Would you mind it? We will list you as an author and cite a source, of course.

Collapse
 
leduc1901 profile image
Duc Le

my email is letrongduc1999@gmail.com. Feel free to contact me