用 interpolate-size, transition-behavior 和 @starting-style 增强 CSS 的 transition
这三个特性都是 2024 年之后的新特性,对于优化 CSS 代码帮助莫大,下文分别介绍的是它们的部分用处。
interpolate-size
:root {
interpolate-size: allow-keywords;
}
这句 CSS 规则声明了启用对关键字属性的过渡效果,于是你可以直接从比如 height: 0 过渡到 height: auto,在这之前它们是不能直接过渡的,只能通过数字到数字的方式。
这里有一个相似的 CSS 新函数,也可以在不启用该声明时使用 height: calc-size(auto) 完成过渡。
transition-behavior
在写了 transition-behavior: allow-discrete 后,离散属性也能被过渡,比如 display.
<style>
.this {
display: block;
opacity: 1;
transition-behavior: allow-discrete;
}
.hided {
display: none;
opacity: 0;
}
</style>
<div class="this">CONTENT</div>
<button onclick="document.querySelector('this').classList.toggle('hided')"></button>
这时,在加上类 hided 时,CONTENT 会有一个淡出效果,但仍然没有淡入效果。
这时可以添加新的 @starting-style 规则定义该元素样式改变时,该从什么初始属性过渡:
@starting-style {
.this {
opacity: 0;
}
}
这样,就不用担心以前使用元素过渡时,不能添加 display: none 规则的问题了。
* Total words: 305
Read other posts