Типы значений в CSS

Абсолютные значения

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

width: 1000px;
font-size: 16px;

Абсолютные значения обладают преимуществом в том, что они представляют собой конечные, понятные и легко воспринимаемые величины.

Относительные значения

Величину относительных зачений сразу и не представишь, сначала нужно узнать предидущее значение потом перемножить его и уже после этого идет вывод.

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

Например, ширина элемента, указанная в процентах, зависит от ширины его родительского элемента. Браузер вычисляет ширину элемента, умножая ширину родителя на заданный процент, и таким образом получает абсолютное значение в пикселях.

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

Помимо процентов есть и другие относительные единицы измерения.

width: 50%;      /* От ширины родителя */
width: 100vw;    /* От ширины вьюпорта */
height: 100vh;   /* От высоты вьюпорта */
font-size: 2em;  /* От размера шрифта родителя */
font-size: 2rem; /* От размера шрифта корневого элемента (html) */

Единицы 'vh' и 'vw' определяют зависимость от размеров области просмотра (вьюпорта), то есть видимой части окна браузера. Единица 'vh' зависит от высоты вьюпорта и часто используется для создания полноэкранных секций.

Единица 'em' определяет зависимость от размера шрифта родительского элемента. Например, если у родителя размер шрифта составляет '20px', а у вложенного элемента размер шрифта задан как '2em', то вычисленный размер шрифта будет равен '40px'.

Подобная единица 'rem' определяет зависимость от размера шрифта так называемого "корневого элемента". В случае обычной веб-страницы корневым элементом является тег 'html'.

Если у корневого элемента страницы размер шрифта составляет '16px', а у определенного тега на странице мы задаем размер шрифта как '2rem', то вычисленный размер шрифта будет равен '32px'.

Значение с ключевыми словами

Следующий тип значений — это ключевые слова. Они достаточно просты и требуют лишь постепенного запоминания.

text-transform: uppercase;
text-align: center;
display: block;
color: red;

Цветовые значения

Ещё один специфический тип значений — это цвета, которые могут быть представлены в нескольких различных формах.

color: #f00;       /* #f  0  0 */
color: #ff0000;    /* #ff 00 00 */
color: rgb(255, 0, 0);
color: rgba(255, 0, 0, 0.5);
color: hsl(0, 100%, 50%);
color: hsla(0, 100%, 50%, 0.5);

Цвета могут быть представлены в нескольких форматах, включая шестнадцатеричную запись, rgb и rgba. В шестнадцатеричной записи, например, #ff0000, каждые две шестнадцатеричные цифры кодируют красный, зеленый и синий каналы с диапазоном от 0 до ff (или от 0 до 255). Сокращенная шестнадцатеричная запись дублирует каждую цифру, например, #f00 соответствует #ff0000.

В форматах rgb и rgba цветовые каналы кодируются десятичными числами от 0 до 255, что упрощает восприятие человеком. Например, color: #ff0000 и color: rgb(255, 0, 0) обозначают один и тот же цвет. В формате rgba добавляется четвертая часть, которая задает степень непрозрачности от 0 до 1, где 0 означает полную прозрачность, а 1 — полную непрозрачность.

Форматы hsl и hsla аналогичны rgb и rgba, но более привычны для дизайнеров-полиграфистов. Кроме того, цвета можно задавать с помощью ключевых слов.

Значения-функции

Следующий тип значений — это функции. Хотя их не так много, среди них особенно полезными являются функции calc и linear-gradient.

/* Получает содержимое атрибута */
content: attr(href);
/* Любые расчёты */
width: calc(100% - 100px);
/* Линейный градиент */
background-image:
linear-gradient(45deg, yellow, green);

С помощью функции calc можно создавать очень сложное поведение. Например, вычислять размер элемента, комбинируя разные единицы измерения: "ширина 200px плюс 10em".

Функция attr используется значительно реже.

CSS директивы и @media запросы

Специальные конструкции, начинающиеся с символа @, называются директивами. Они чаще всего влияют на весь документ, но сами по себе не выполняют стилизацию. Например, директива @font-face позволяет подключать на страницу нестандартные шрифты, которые затем можно использовать в свойстве font-family. Другой пример — директива @media, которая активирует или деактивирует определенные CSS-правила в зависимости от условий, таких как размер экрана.

@font-face {
  font-family: "Open Sans";
  src:
    url("OpenSans-Regular.woff2") format("woff2"),
    url("OpenSans-Regular.woff") format("woff");
}
@media (max-width: 600px) {
  .sidebar {
    display: none;
  }
}