.
Calc-size в 2024
Недавно вышел первый рабочий черновик спецификации css-values-5. Этот пост входит в серию о новых возможностях CSS из этой спецификации.
Несмотря на наличие определение собственных размеров в словаре Веб-стандаров, здесь можно считать, что собственные размеры - это те, что не могут быть установлены без отрисовки документа. Например, нельзя знать, какой размер текста, пока он не будет нарисован заданным шрифтом.
В таких случаях мы не можем использовать проценты и другие зависимые от контента значения в свойствах, связанных с размерами элемента.
Но функция calc-size()
можно позволить это делать некоторым образом.
calc-size( <calc-size-basis>, <calc-sum> )
Она принимает два аргумента, базис и выражение, которое должно быть рассчитано на основе этого базиса. При этом
внутри выражения разрешено ключевое слово size
, значения которого будет равно базису. А в качетве
базиса можно указать не только численные значения, но и <intrinsic-size-keyword>
, то есть
ключевые слова вроде auto
, min-content
, max-content
и тому подобное.
Значение базиса будет рассчитано на основе контекста свойства, в котором используется выражение.
Например, так можно сделать блок равным половине максимально возможной ширины по контенту:
width: calc-size(max-content, size / 2);
А зачем?
Например, так можно анимировать значение от 0
до auto
. Потому что размер,
рассчитанный с помощью cals-size()
, считается
определяемым.
.class {
width: 0;
animation-name: w;
animation-duration: 1s;
}
@keyframes w {
to {
width: calc-size(auto, size);
}
}