Skip to main content

Использование функции CSS calc()

Использование функции CSS calc()

С появлением функции calc() стало возможным делать математические расчёты, такие как сложение, вычитание, умножение, деление прямо в CSS. Рассмотрим некоторые примеры её использования, которые могут пригодиться.

Выравнивание по центру

Наверное самый распространённый случай использования. Чтобы отцентрировать элемент, необходимо отступить 50% от левой стороны и отнять половину ширины самого элемента. А при центрировании по вертикали 50% от высоты контейнера и минус половину высоты элемента. В примере ниже блок центрируется по горизонтали и вертикали с помощью функции calc():

<div class="center-block">
    <p>Текст</p>
</div>

<style>
.center-block {
   position: absolute;
   top: calc(50% - 200px / 2);
   left: calc(50% - 200px / 2);
   width: 200px;
   height: 200px;

   background: rgba(0, 0, 0, 0.4);
   color: #fff;
   font-size: 16px;
   text-transform: uppercase;
   display: flex;
   align-items: center;
   justify-content: center;
}
</style>

Прижать footer к низу окна браузера

* {
	margin: 0;
	padding: 0;
}
.content {
	min-height: calc(100vh - 80px);
}

100vh — это высота окна браузера, а 80px — высота footer. И с помощью функции calc() мы вычитаем вторую величину из первой, тем самым прижимая footer к низу.

Резиновый блок рядом с фиксированным

<div class="container">
	<div class="block element-1">100% - 50px</div>
	<div class="block element-2">50px</div>
</div>

<style>
html {
  box-sizing: border-box;
}

:root {
  background-color: #373150;
  font-size: 16px;
  font-weight: 400;
  text-rendering: geometricPrecision;
  line-height: 1.4;
  text-decoration-skip: ink;
  font-family: -apple-system-headline, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
}

*, *:before, *:after {
  box-sizing: inherit;
}

body {
  margin:0;
  padding:0;
}

.block {
  display:inline-block;
  background-color:#EF6174;
  color:white;
  font-size:0.8em;
  text-align:center; 
  line-height:4em;
}

.container {
  display:block;
  max-width:900px;
  margin:0 auto 20px auto;
}

.element-1 {
  float:left;
  height:50px;
  width: calc( 100% - 50px );
}

.element-2 {
  float:left;
  width: 40px;
  height:50px;
  margin-left:10px;
}
</style>

Похожие записи
Как использовать animate.css

Посмотрим правде в глаза, новые функции CSS3, которые впервые привлекли наше внимание, были анимации и... Читать далее

Как использовать фильтры CSS

Фильтры CSS - это мощный инструмент, который позволяет нам создавать удивительные визуальные эффекты с нашими... Читать далее

Как сделать прогресс бар на CSS

Прогресс бар начал использоваться в интернете с тех пор, как мы поняли, что не все... Читать далее

Прижать футер с помощью Flexbox

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

CSS animation

Свойство animation в CSS можно использовать для анимации многих других свойств CSS, таких как цвет,... Читать далее

CSS transition

CSS transition - это свойство, с помощью которого можно сделать плавные эффекты перехода элемента из... Читать далее

Добавить комментарий

*

code