CSS функция calc()

CSS функция calc()


В CSS есть функция calc(), применяемая для выполнения простых вычислений. Вот пример её использования:

.block{
  /* Вычесть 80px из 100vh */
  width: calc(100vh - 80px);
}


Поддержка браузерами

Функция хорошо поддерживается, поэтому можно спокойно использовать

Значения

Выражение представляет собой комбинацию значений размеров и следующих знаков математических действий. В круглых скобках мы можем писать любые математические операции с любыми единицами измерения, доступными в вебе (%, px, rem, em, vw, vh, vmin и т.д.). Доступны четыре стандартных операнда:

  • + — сложение;
  • - — вычитание;
  • / — деление;
  • * — умножение.

Операторы сложения и вычитания обязательно с двух сторон должны отбиваться пробелом. Иначе браузер воспримет их как часть числа. Хоть операторы деления и умножения не требуют такой строгости к себе, но принято и их тоже отбивать пробелами для удобства чтения.


Информация

1 Единственное место, где вы можете использовать функцию calc() — это значения.

2. Она также может использоваться только для части свойства, например:

.block{
   border-radius: 15px calc(15px / 3) 4px 2px;
}

3. Она может даже быть частью другой функции, которая является частью свойства!

4. calc() нельзя использовать в медиа запросах


Практика

Частая ситуация: в вёрстке три колонки, ширина каждой из которых должна быть ровно третью от 100%. 100% / 3 = 33.3333333333...%. Раньше мы допускали неточность и указывали ширину как 33%. Теперь можно использовать calc() и пусть браузер сам считает.

При отрисовке страницы браузер сам высчитает и подставит значение:

.selector {
  width: calc(100% / 3);
}

Но лучше не перегружать браузер расчётами. На каждую операцию он тратит некую долю секунды и часть оперативной памяти. Если расчётов будет много, то это потенциально повлияет на скорость загрузки страницы. Используйте calc() с умом.


Подробная статья про calc: читать

Report Page