Основные стили в CSS
Разработчику
Аналитику
Тестировщику
Архитектору
Инженеру
Основные стили в CSS
Единицы измерения
| Тип | Примеры | Описание |
|---|---|---|
| Абсолютные | px, cm, in, pt | Фиксированные значения. px — наиболее распространён. |
| Относительные | %, em, rem, vw, vh | Зависят от контекста. |
em | 1.2em | Относительно размера шрифта текущего элемента. |
rem | 1.5rem | Относительно размера шрифта корневого элемента (<html>). |
% | 50% | Относительно размера родителя. |
vw / vh | 100vw, 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-colorbackground-imagebackground-repeatbackground-positionbackground-sizebackground-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