interpolate-size 属性
interpolate-size 是 CSS 中的一个属性,用于启用元素大小的动画和过渡,特别是从固定长度(如像素值)到内在大小关键字(如 auto、min-content、max-content 或 fit-content)之间的平滑变化。通常,默认情况下,CSS 动画无法直接从 height: 100px 过渡到 height: auto,因为 auto 不是一个可插值的数值。但通过设置 interpolate-size: allow-keywords,你可以允许这种插值,从而实现更平滑的动画效果。
-
语法 :
interpolate-size: numeric-only | allow-keywords;numeric-only:默认值,仅允许数值之间的插值。allow-keywords:允许关键字(如auto)参与插值。
-
用法示例:
css.element { interpolate-size: allow-keywords; height: 0; transition: height 0.5s ease; } .element:hover { height: auto; /* 现在可以平滑过渡到 auto 值 */ } -
浏览器支持:这是一个较新的功能,Browser Support
calc-size() 函数
calc-size() 是 CSS 中的一个函数,用于对内在大小值(如 auto、fit-content 等)进行数学计算。它允许你基于一个基础大小(basis)来添加、减去或进行其他运算,从而生成一个新的大小值。这特别有用在响应式设计、容器查询或需要动态调整大小的场景中。
-
语法 :
calc-size(basis, calculation);basis:基础大小,可以是内在关键字(如auto、min-content、max-content、fit-content、stretch)或长度值。calculation:计算表达式,如basis + 10px、basis - 20%、clamp(100px, basis, 500px)等。
-
用法示例 (针对
height: calc-size(auto, size)): 用户查询中的 "size" 可能是一个占位符或简写,指代计算表达式(如basis + 10px)。假设这是height: calc-size(auto, basis + 10px)的变体,以下是一个实际例子:css.element { height: calc-size(auto, basis + 10px); /* 基于 auto 高度再加 10px */ }这会计算元素的内在
auto高度,然后在其基础上增加 10px。如果是动画,可以结合interpolate-size使用:css.element { interpolate-size: allow-keywords; height: calc-size(auto, basis + 10px); transition: height 0.5s ease; } .element:hover { height: calc-size(auto, basis + 50px); /* 平滑过渡到更大的计算高度 */ } -
浏览器支持 :类似于
interpolate-size,
两者结合使用
interpolate-size 和 calc-size() 经常一起使用,尤其在需要动画涉及内在大小的场景中。例如,calc-size() 可以生成一个基于 auto 的计算值,而 interpolate-size 确保从一个计算值到另一个的过渡是平滑的。这解决了长期以来 CSS 中动画 height: auto 的痛点。