Я хотел бы поделиться небольшим примером использования calc() CSS, который помог мне добиться отклика на высоту.

Мой вариант использования выглядит следующим образом

  1. Родительский элемент с некоторой статической высотой.
  2. Три дочерних элемента (для справки назовем их c1, c2 и c3), которые должны заполнить родителя.
  3. Из трех дочерних элементов два из них (c1 и c3) будут иметь статическую высоту, а c2 должен занимать оставшееся пространство.
  4. И c2 должен регулировать свою высоту при изменении размера окна, не мешая своим братьям и сестрам.

Чтобы достичь этого, мне нужно рассчитать высоту, необходимую для c2, сначала я попробовал следующее решение, чтобы найти высоту.

  1. Вычислите сумму высоты двух дочерних элементов (c1 и c3).
  2. Вычислить высоту родительского элемента.
  3. Теперь высота последнего дочернего элемента вычисляется из уравнения - высота родителя - сумма высоты элементов c1 и c3.
  4. Установите результирующую высоту для дочернего элемента c2.
  5. Чтобы автоматически регулировать высоту при изменении размера окна, зарегистрируйте обратный вызов изменения размера и повторите шаги с 1 по 4.

Что ж, этот метод будет работать хорошо, но его можно было бы сделать лучше.

Как это можно сделать лучше?

А вот и calc CSS. Есть много вариантов использования calc CSS, одно из них — микширование модулей, которое поможет мне в этом.

Итак, мое требование будет достигнуто с помощью следующих шагов.

  1. Вычислите сумму высоты двух дочерних элементов (c1 и c3).
  2. Теперь установите высоту дочернего элемента c2 как height: calc(100% — высота от шага 1).

Вот и все. Теперь все дочерние элементы будут помещаться в его контейнер, тогда как дочерний элемент c2 будет использовать оставшееся пространство, оставленное элементами c1 и c3.

Также стоит отметить, что это позволит элементу c2 регулировать свою высоту при изменении размера окна без использования обработчика события изменения размера.

использованная литература

https://developer.mozilla.org/en/docs/Web/CSS/calc

https://css-tricks.com/a-couple-of-use-cases-for-calc/