--- title: will-change slug: Web/CSS/will-change translation_of: Web/CSS/will-change ---

{{ CSSRef() }}{{SeeCompatTable}}

CSS свойство will-change предоставляет автору возможность уведомить браузер об ожидаемом изменении элемента, таким образом браузер может настроить соответствующую оптимизацию до того как элемент действительно изменится. Такой тип оптимизации может повысить отзывчивость страницы, совершая, возможно дорогие операции до того как они действительно понадобятся. 

/* Keyword values */
will-change: auto;
will-change: scroll-position;
will-change: contents;
will-change: transform;        /* Example of <custom-ident> */
will-change: opacity;          /* Example of <custom-ident> */
will-change: left, top;        /* Example of two <animateable-feature> */

/* Global values */
will-change: inherit;
will-change: initial;
will-change: unset;

Правильно использование этого свойства может быть немного сложнее:

{{cssinfo}}

Синтаксис

Значения

auto
Это ключевое слово не выражает конкретной цели; пользовательский агент должен применяться независимо эвристики и оптимизации как он это обычно делает.

<Animateable-feature> может иметь одно из следующих значений:

scroll-position
Указывает, что автор ожидает анимацию или изменение положения скролла элемента в ближайшем будущем.
contents
Указывает, что автор ожидает анимацию или изменение чего то в контенте элемента в ближайшем будущем.
{{cssxref("custom-ident", "<custom-ident>")}}
Указывает, что автор ожидает анимацию или изменить свойства с заданным именем в элементе в ближайшем будущем . Если заданное свойство-это сокращённая запись,  тогда оно указывает на все полные записи свойств, на которые указывает сокращённая запись. Это не может быть одним из следующих значений: unset, initial, inherit, will-change, auto, scroll-position, или contents

Примеры

.sidebar {
  will-change: transform;
}

В примере выше прямо в таблицу стилей добавляется свойство will-change, которое заставит браузер держать оптимизацию в памяти намного дольше, чем нужно, а мы уже видели почему следует этого избегать. Ниже приведён ещё один пример, показывающий, как применить свойство will-change с помощью скриптов, что вероятно, вам следует делать в большинстве случаев.

var el = document.getElementById('element');

// Set will-change when the element is hovered
el.addEventListener('mouseenter', hintBrowser);
el.addEventListener('animationEnd', removeHint);

function hintBrowser() {
  // The optimizable properties that are going to change
  // in the animation's keyframes block
  this.style.willChange = 'transform, opacity';
}

function removeHint() {
  this.style.willChange = 'auto';
}

Однако может быть целесообразно включить will-change в вашу таблицу стилей для приложения, в котором страница переворачивается при нажатии клавиши, например альбом или презентация, где страницы большие и сложные. Это позволит браузеру заранее подготовить переход и позволит быстро переключаться между страницами, как только будет нажата клавиша.

.slide {
  will-change: transform;
}

Спецификация

{{Specifications}}

[1] В Firefox с 31 до 35 версии свойство will-change было доступно, но только, если пользователь установил значение флага layout.css.will-change.enabled в true. Выбор был удалён в Firefox 43.

Firefox позволяет установить will-change: will-change до версии 42.0, что не соответствует спецификации. Это было исправлено в Firefox 43.0. Смотрите {{bug("1195884")}}.