语法
will-change: auto | scroll-position | contents | <custom-ident> | initial | inherit;
will-change 属性的示例:
<!DOCTYPE html>
<html>
<head>
<title>The 文档的标题</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>
will-change 属性向浏览器提示了一个元素在不久的将来会如何变化。
应在更改元素之前设置优化。
will-change 属性最初被命名为 will-animate。
will-change 属性允许浏览器更改元素的滚动位置、内容或者多个 CSS 属性值。
但是,许多属性不会产生任何影响。
这些值必须以逗号分隔。
will-change 属性可以具有以下值:unset、initial、inherit、will-change、auto、scroll-position 或者 contents。
应谨慎使用此属性。
不同的浏览器以不同的方式使用此属性,过度使用它可能会忽略该属性。
CSS will-change 属性值说明
| 值 | 描述 |
|---|---|
| auto | 应应用标准浏览器优化。 |
| scroll-position | 指定元素的滚动位置将来会有动画。 |
| contents | 指定元素的内容将来会有动画。 |
| <custom-ident> | 预计将在近期在元素上使用给定的名称更改或者动画属性。如果属性缩写,则更改将扩展到所有的始终属性。 |
| initial | 使属性使用其默认值。 |
| inherit | 从父母元素继承属性。 |
will-change 属性的正确使用:
- will-change 属性不应应用于太多元素。它的过度使用会减慢页面加载速度。在这种情况下,会消耗大量资源。
- 使用 will-change 属性时,最好在更改发生之前和之后使用脚本代码。
- will-change 属性不应应用于元素以进行过早的优化。如果页面表现良好,则无需向元素添加 will-change。预计此属性将用作处理现有性能问题的最后一个选项。
- 应该给浏览器一些时间进行优化。 will-change 属性旨在通知预期会提前更改的属性。
- 当 will-change 属性与创建堆叠上下文的值一起使用时,它会影响元素的视觉显示。
| 初始值 | auto |
|---|---|
| 应用于 | 所有元素。 |
| 继承 | 无效 |
| 可动画的 | 无效 |
| 版本 | CSS1 |
| DOM 语法 | object.Style.WillChange = "scroll-position"; |
日期:2020-06-02 22:14:52 来源:oir作者:oir
