Перейти к основному содержимому

Основные стили в CSS

Разработчику Аналитику Тестировщику
Архитектору Инженеру

Основные стили в CSS

Единицы измерения

ТипПримерыОписание
Абсолютныеpx, cm, in, ptФиксированные значения. px — наиболее распространён.
Относительные%, em, rem, vw, vhЗависят от контекста.
em1.2emОтносительно размера шрифта текущего элемента.
rem1.5remОтносительно размера шрифта корневого элемента (<html>).
%50%Относительно размера родителя.
vw / vh100vw, 50vhОтносительно ширины/высоты окна браузера.

Блочная модель (Box Model)

Каждый элемент на странице — это прямоугольная «коробка». Эта коробка состоит из нескольких слоёв:

     МАРЖИНЫ (margin)
┌─────────────────────────────┐
│ ПАДДИНГИ (padding) │
│ ┌─────────────────────┐ │
│ │ КОНТЕНТ │ │
│ │ │ │
│ └─────────────────────┘ │
│ border │
└─────────────────────────────┘

Стили блока

content

content — содержимое. То, что внутри: текст, изображение, вложенные элементы.

Содержимое — это то, что находится внутри элемента: текст, изображения, вложенные блоки, видео, SVG и другие HTML-элементы. Размер содержимого определяется свойствами width и height, если они заданы явно. По умолчанию размер содержимого зависит от его объёма.

Пример:

<div>Это текстовое содержимое</div>
<img src="photo.jpg" alt="Фотография">

Что такое отступ

Отступ — это пространство вокруг или внутри элемента. В CSS различают два типа отступов:

  • margin — внешний отступ;
  • padding — внутренний отступ.

margin

margin – внешние отступы. Пространство вне границы, отделяющее элемент от других. Не имеет фона, всегда прозрачное:

  div {
margin: 10px; /* Все стороны */
margin-top: 20px; /* Индивидуально */
}

margin управляет расстоянием до соседних элементов. Может "схлопываться" (collapse) между вертикальными блоками. Например, если один блок имеет margin-bottom: 20px, а следующий — margin-top: 30px, расстояние между ними будет не 50px, а 30px.

margin надо использовать:

  • Чтобы отделить один блок от другого.
  • Для центрирования блока по горизонтали: margin: 0 auto.
  • Для отступа от края родителя.

padding

padding – внутренние отступы. Пространство между содержимым и границей (border). Увеличивает общую занимаемую площадь:

  div {
padding: 15px;
}

padding находится внутри границы и имеет фон того же цвета, что и элемент.

padding надо использовать:

  • Чтобы отодвинуть текст от края фона.
  • Для создания "воздуха" внутри кнопки, карточки и т.п.
  • При необходимости, чтобы кликабельная область была больше содержимого.

border

border — видимая линия вокруг содержимого и паддингов. Состоит из трёх частей:

  • ширина: 1px, 2px, medium;
  • стиль: solid, dashed, dotted, double, none;
  • цвет: black, #FF0000, rgba(255,0,0,0.5).
.border-example {
border: 2px solid #333;
}

border входит в общую ширину и высоту элемента (если не используется box-sizing: border-box).

outline

outline — невидимая рамка, рисуемая вне margin. Не влияет на размеры элемента и не занимает места в потоке.

  .box {
border: 2px solid black;
outline: 1px dashed red;
}

Похож на border, но не входит в размеры элемента, рисуется вокруг margin, не может быть скруглён через border-radius, обычно используется для фокуса (accessibility). Используется браузером по умолчанию при tab-навигации.


Размеры и позиционирование

width и height

Ширина (width) и высота (height) определяют размер содержимого. Реальный размер зависит от box-sizing:

  • content-box (по умолчанию): width = content;
  • border-box: width = content + padding + border.
* {
box-sizing: border-box;
}

Рекомендуется глобально применять border-box — это упрощает расчёт размеров.

width и height задают ширину и высоту содержимого (если не указано иное).

width – ширина;

height – высота:

  .container {
width: 100%;
min-height: 200px;
}

Поддерживают:

  • абсолютные значения: px, cm, in,
  • относительные: %, em, rem, vw, vh.

Важно: реальный размер зависит от box-sizing. По умолчанию — content-box (размер без padding и border). Лучше использовать border-box:

* {
box-sizing: border-box;
}

position

position – позиционирование, бывает следующих типов:

  • static (по умолчанию);
  • relative (сдвиг относительно себя);
  • absolute (относительно ближайшего positioned-родителя);
  • fixed (относительно окна браузера);
  • sticky (гибрид relative + fixed).
.header {
position: fixed;
top: 0;
left: 0;
width: 100%;
}

— хедер будет всегда сверху экрана при прокрутке.

.sticky-header {
position: sticky;
top: 0;
}

Фон и цвет

background

background – фон, может включать цвет, изображение, положение, размер, повторение.

Это многофункциональное свойство, объединяющее:

  • background-color
  • background-image
  • background-repeat
  • background-position
  • background-size
  • background-attachment
  body {
background: url("image.jpg") no-repeat center / cover;
}

— фоновое изображение по центру, без повтора, растянуто на весь блок.

color

color – цвет текста. Задаёт цвет символов внутри элемента:

  h1 {
color: #FF5733;
}

Форматы:

  • HEX: #FF5733
  • RGB: rgb(255, 87, 51)
  • RGBA: rgba(255, 87, 51, 0.8) — с прозрачностью.
  • Названия: red, blue (ограниченный набор).

Текст и шрифты

font

font – шрифт:

  p {
font-family: "Arial", sans-serif;
font-size: 16px;
font-weight: bold;
}

font-family

font-family — семейство шрифтов. Список шрифтов через запятую. Браузер использует первый доступный.

font-family: "Arial", "Helvetica", sans-serif;
  • "Arial" — желаемый шрифт.
  • sans-serif — запасной вариант (шрифт без засечек).

font-size

font-size — размер шрифта. Единицы:

  • px — фиксированный размер.
  • em — относительно размера родителя.
  • rem — относительно корневого (<html>) элемента.
  • vw — относительно ширины окна.

font-weight

font-weight — жирность. От 100 до 900 (400 = normal, 700 = bold).

text

text – свойства текста:

  .text {
text-align: center;
text-decoration: underline;
line-height: 1.5;
}

text-align

text-align — выравнивание текста

  • left, right, center, justify (по ширине).

text-decoration

text-decoration — декоративные линии

  • underline — подчёркивание,
  • overline — надчёркивание,
  • line-through — зачёркивание.

line-height

line-height — межстрочный интервал. Задаёт высоту строки. Рекомендуется значение 1.4–1.6 для читаемости.


Специальные эффекты

box-shadow

box-shadow – тень элемента:

  .card {
box-shadow: 0 4px 8px rgba(0,0,0,0.1);
}

— тень смещена на 4px вниз, размытие 8px, полупрозрачная.

column-count

column-count – мультиколоночность. Разбивает текст на несколько колонок, как в газете:

  .article {
column-count: 3;
column-gap: 20px;
}

display

Определяет тип отображения элемента:

  • block — занимает всю ширину, начинается с новой строки.
  • inline — не создаёт перенос, не принимает width/height.
  • inline-block — как inline, но поддерживает размеры.
  • flex — включает Flexbox-контейнер.
  • grid — включает Grid-контейнер.
  • none — скрывает элемент полностью.
.container {
display: flex;
gap: 16px;
}

gap

Расстояние между дочерними элементами в flex или grid. Заменяет необходимость в margin.

.grid {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 20px;
}

overflow

Управляет поведением при выходе содержимого за границы:

  • visible — по умолчанию, содержимое выходит наружу.
  • hidden — обрезает всё, что выходит за пределы.
  • scroll — добавляет прокрутку всегда.
  • auto — добавляет прокрутку только при необходимости.
.scrollable {
height: 200px;
overflow-y: auto;
}

white-space

Управляет обработкой пробелов и переносов:

  • normal — стандартное поведение.
  • nowrap — запрещает перенос строк.
  • pre — сохраняет пробелы и переносы, как в <pre>.
  • pre-wrap — сохраняет пробелы, но позволяет перенос.
.code {
white-space: pre-wrap;
}

word-break

Контролирует разрыв слов:

  • normal — стандартный перенос.
  • break-all — разрывает слова даже внутри слова.
  • keep-all — не разрывает слова (часто для CJK-языков).
.cell {
word-break: break-all;
}

border-radius

Скругление углов границы и фона:

.rounded {
border-radius: 8px;
/* или: 50% — для круга */
}

box-shadow

Добавляет тень. Может быть внутренней (inset) или внешней:

.card {
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
}

Синтаксис: смещениеX смещениеY размытие растяжение цвет.

text-shadow

Тень для текста:

.title {
text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.3);
}

Чит-лист и документация

Если возникло желание погрузиться в CSS, то рекомендую ознакомиться с MDN - https://developer.mozilla.org/ru/docs/Web/CSS

Чит-лист - https://cheatsheets.zip/css3