will-change
will-change: auto | scroll-position | contents | <właściwość>, …
Wskazówka dla przeglądarki, że któraś właściwość elementu wkrótce się zmieni (zwykle transform albo opacity w animacji). Przeglądarka może się przygotować, na przykład rysując element na osobnej warstwie, żeby start animacji nie szarpał. To rozwiązanie konkretnego problemu z płynnością, a nie zwykła część stylów.
Wartości
- auto – bez wskazówki.
- nazwa właściwości –
transform,opacity…, kilka oddzielonych przecinkami. - scroll-position – zmieni się pozycja przewinięcia zawartości (przewijanie).
- contents – zmieni się zawartość elementu.
Wartość początkowa: auto. Dziedziczona: nie. Dotyczy: wszystkich elementów.
Przykłady
Wskazówka dopiero wtedy, gdy zmiana jest prawdopodobna – po najechaniu kursorem na menu, tuż zanim zostanie otwarte kliknięciem:
.submenu {
opacity: 0;
translate: 0 -10px;
transition: opacity 0.3s, translate 0.3s;
}
.menu:hover .submenu {
will-change: opacity, translate;
}
.menu.open .submenu {
opacity: 1;
translate: none;
}
Na co uważać
- Nie zapisuj jej hurtowo (
* { will-change: transform; }) ani „na wszelki wypadek”: każda dodatkowa warstwa zajmuje pamięć i strona może wtedy działać wolniej zamiast szybciej. - Wartości, które same utworzyłyby kontekst nakładania (
transform,opacity,filter…), tworzą go już zwill-change, nawet gdy nic się nie zmienia. Przytransformifilterelement staje się dodatkowo blokiem zawierającym dla potomków zposition: fixed– przyklejony pasek w nim nie ustawia się już względem okna. - Animacje
transformiopacityprzeztransitionalbo@keyframesprzeglądarka optymalizuje sama, zwykle nie potrzebująwill-change. autonie da się łączyć z innymi wartościami, aallnie jest dozwoloną wartością – taka deklaracja zostanie odrzucona.
Obsługa w przeglądarkach
Baseline – szeroko dostępne: we wszystkich popularnych przeglądarkach od stycznia 2020, za szeroko dostępne uznawane od lipca 2022. Od wersji: Chrome 36, Firefox 36, Safari 9.1. Stan: październik 2026 (MDN browser-compat-data).
Zobacz też:
transform
opacity
transition
animation
z-index