Меня зовут София. Я - CSS инженер. Это мой блог.

Если вам очень больно без стилей, вы можете их.

.

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);
    }
}