Let's take a look at the
will-change property, which is one of the CSS properties.
CSS will-change Style PropertyThis property is a relatively recent style attribute, part of the CSS level 4 specifications.
The will-change CSS property informs the browser in advance that a DOM element could undergo changes, thereby
assisting in setting appropriate optimizations before the actual changes take place. For instance, if certain elements are going to change, like through transform or opacity, it is intended to use will-change in advance as a sort of "notification" to optimize rendering through the browser.
A simple usage syntax could be as follows:
will-change: transform, opacity;As such, the style properties to be used as the value of will-change are applied together with a comma.
Using with Repainting or ReflowWhen DOM elements are redrawn, events like repainting and reflow will occur. These can significantly impact performance and can hinder smooth movements, among other things. In these instances, using will-change appropriately can enhance browser performance. For example, it can be used as follows:
@ Using with RepaintingRepainting refers to when changes occur without affecting the layout. The will-change can inform the browser that certain properties (e.g., `color` or `background`) might change in the future, to optimize the redrawing process.
.element {
will-change: color, background;
}
@ Using with ReflowAlthough similar, reflow occurs when changes affect the element's layout. In these cases, will-change can inform the browser what attributes could affect the layout (e.g., `width`, `height`, `top`, `left`), and can be used to optimize layout adjustments.
.element {
will-change: left, top;
}
In ConclusionThe will-change property is one of those that require caution in usage. The most crucial point is that excessive use can have unintended consequences, so it needs to be used judiciously and only where necessary. Besides, the following points should also be considered:
-
Dynamic Application: Apply `will-change` dynamically to optimize performance, adding it just before changes begin and removing it once changes have ended.
-
Avoid Layout Properties: If possible, do not trigger changes for layout properties (like width and height) that are generally more performance-intensive and can cause a reflow.
So far, we've taken a brief look at the will-change CSS property.