Свойство will-change сообщает браузеру об ожидаемом изменении элемента. Необходимо настроить оптимизации перед изменением элемента.
Свойство will-change раньше имело название will-animate.
Свойство will-change позволяет браузеру изменить положение прокрутки элемента, контент и не менее одного значения CSS свойств. Но для многих свойств оно не будет иметь эффекта.
Значения должны быть разделены запятыми. Но не применяйте свойство will-change для большого количества элементов. Оно не может быть значениями unset, initial, inherit, will-change, auto, scroll-position или contents.
Свойство will-change также влияет на визуальное отображение элемента.
Данное свойство должно быть использовано с осторожностью. Разные браузеры используют свойство по-разному, а если использовать это свойство слишком много, оно будет проигнорировано.
| Значение по умолчанию | auto |
| Применяется | Ко всем элементам. |
| Наследуется | Нет. |
| Анимируемое | Нет. |
| Версия | CSS1 |
| DOM синтаксис | object.style.willChange = "scroll-position"; |
Синтаксис
will-change: auto | scroll-position | contents | <custom-ident> | initial | inherit;Пример
<!DOCTYPE html>
<html>
<head>
<title>Заголовок документа</title>
<style>
.circle {
width: 50px;
height: 50px;
transform: translate(50px, 0px);
border-radius: 30px;
}
.circle.blue {
background: #1c87c9;
will-change: transform;
}
.circle.green {
background: #8ebf42;
}
</style>
</head>
<body>
<h2>Пример свойства will-change</h2>
<div class="circle green"></div>
<div class="circle blue"></div>
<div class="circle green"></div>
<div class="circle blue"></div>
<div class="circle green"></div>
<script>
var circles= document.getElementsByClassName("circle blue");
function update(t) {
for (var i = 0; i < circles.length; i++) {
var xpos = Math.sin(t/1000 + 1000*i) * 50 + 50;
circles[i].style.transform = "translate(" + xpos + "px, 0px)";
}
window.requestAnimationFrame(update);
}
update();
</script>
</body>
</html>Значения
| Значение | Описание |
|---|---|
| auto | Применяется стандартная оптимизация браузера. |
| scroll-position | Указывает, что положение прокрутки должно быть анимировано в будущем. |
| contents | Указывает, что контент элемента должно быть анимировано в будущем. |
| <custom-ident> | Ожидается изменение или анимирование свойства с указанным названием элемента. |
| initial | Устанавливает свойство в значение по умолчанию. |
| inherit | Значение элемента наследуется от родительского элемента |
Поддержка браузера
|
|
|
|
|
|---|---|---|---|
| 36.0+ | 36.0+ | 9.1+ | 24.0+ |
Практикуйте свои знания
What does the 'will-change' property in CSS do?
Правильный!
Неправильно!