W3docs

Свойства CSS3

Сгруппированный справочник по основным свойствам CSS3: Animation, Flexbox, Grid, Transforms и другие модули со ссылками на подробные главы.

CSS3 — это последняя эволюция языка каскадных таблиц стилей. Вместо единого монолитного выпуска CSS3 разбит на независимые модули — Animations, Flexbox, CSS Grid, Backgrounds and Borders, Transforms, Filters и другие, — которые браузеры могут реализовывать и выпускать по отдельности. Каждый модуль добавил новые свойства поверх исходного набора CSS2, предоставив скруглённые углы, градиенты, тени, анимации, гибкие и сеточные макеты и визуальные фильтры без использования изображений или JavaScript.

Эта страница является кратким справочным указателем свойств, введённых или значительно расширенных в CSS3, сгруппированных по модулям. Каждая строка содержит ссылку на полную главу с синтаксисом, значениями и живыми примерами.

Если вы только начинаете знакомство с языком, прочитайте главы CSS Introduction и CSS Syntax, прежде чем переходить к отдельным свойствам.

Как пользоваться этим справочником

  • Ищите свойство по группе. Заголовки ниже соответствуют модулям CSS3: если вам нужно свойство макета, смотрите в разделе Flexible Box Layout или Grid Layout; для движения — в разделе Animation или Transitions; для визуальных эффектов — в разделе Filter Effects или Transform Properties.
  • Переходите по ссылкам за подробностями. Каждое свойство ведёт в свою главу с полным списком значений, значениями по умолчанию и интерактивными демонстрациями.
  • Учитывайте поддержку браузеров. Модули CSS3 достигли стабильной, беспрефиксной поддержки в разное время. Большинство свойств ниже безопасно работают во всех современных браузерах, однако всегда проверяйте поддержку более новых добавлений (например, некоторых свойств column-*), прежде чем полагаться на них в продакшне.

Замечание о вендорных префиксах

Пока модули CSS3 ещё были экспериментальными, браузеры выпускали свойства с вендорными префиксами, такими как -webkit-, -moz-, -ms- и -o-. Вы можете встретить их в старых кодовых базах:

/* Older code — prefixes were needed during the experimental phase */
.box {
  -webkit-transform: rotate(15deg);
  -moz-transform:    rotate(15deg);
  transform:         rotate(15deg); /* Always list the unprefixed property last */
}

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

CSS3 vs. CSS2 — что изменилось?

CSS2 охватывал базовую блочную модель, цвета, шрифты и позиционирование. CSS3 расширил этот фундамент следующими возможностями, которые ранее отсутствовали или были очень ограничены:

  • Скруглённые углы и рамки из изображенийborder-radius, border-image
  • Тениbox-shadow, text-shadow
  • Градиенты и множественные фоныbackground-size, background-clip
  • Гибкие и сеточные макеты — Flexbox (flex, align-items, …), CSS Grid (grid, grid-template-columns, …)
  • Двумерные и трёхмерные трансформацииtransform, perspective
  • Плавные переходы между состояниямиtransition
  • Анимации на основе ключевых кадровanimation, @keyframes
  • Многоколоночный текстcolumn-count, column-gap
  • Визуальные фильтрыfilter (blur, brightness, contrast, …)
  • Настраиваемая прозрачностьopacity

Список свойств CSS3

Свойства анимации

Анимации на основе ключевых кадров позволяют описывать, как элемент переходит через серию стилевых снимков. Правило @keyframes определяет снимки, а свойства animation-* применяют и управляют ими на элементе.

/* Minimal animation example */
@keyframes slide-in {
  from { transform: translateX(-100%); opacity: 0; }
  to   { transform: translateX(0);     opacity: 1; }
}

.banner {
  animation: slide-in 0.4s ease-out both;
}
СвойствоОписание
animationСокращённое свойство, задающее все параметры анимации в одном объявлении.
animation-delayЗадаёт момент начала анимации (положительное значение = задержка; отрицательное = старт с середины цикла).
animation-directionУправляет направлением воспроизведения: normal, reverse, alternate или alternate-reverse.
animation-durationОпределяет длительность одного цикла анимации (например, 0.4s, 500ms).
animation-fill-modeЗадаёт стиль элемента до начала и/или после окончания анимации (forwards, backwards, both).
animation-iteration-countКоличество повторений анимации — число или infinite.
animation-nameУказывает имя применяемого правила @keyframes.
animation-play-stateПриостанавливает (paused) или возобновляет (running) анимацию — полезно для кнопок переключения.
animation-timing-functionКривая плавности для каждого цикла: ease, linear, ease-in-out, cubic-bezier(…), steps(…).
@keyframes (at-rule)Определяет промежуточные стилевые снимки (ключевые кадры), через которые проходит анимация.

Свойства фона

CSS3 расширил возможности фонов: добавил управление размером, областью отсечения и возможность накладывать несколько изображений на один элемент.

/* Responsive hero with background-size */
.hero {
  background-image: url('/img/hero.jpg');
  background-size: cover;       /* fills the box; crop as needed */
  background-position: center;
  background-clip: border-box;  /* default; image reaches border edge */
}
СвойствоОписание
background-clipУправляет областью распространения фона — border-box, padding-box или content-box.
background-originЗадаёт начало отсчёта для background-positionborder-box, padding-box или content-box.
background-sizeЗадаёт размер фонового изображения: длина, auto, cover (заполнение с возможным обрезанием) или contain (полное размещение).

Свойства рамок

CSS3 добавил скруглённые углы и рамки из изображений — возможности, которые ранее требовали трюков с картинками.

/* Rounded button */
.btn {
  border-radius: 6px;
  border: 2px solid steelblue;
}

/* Pill shape */
.badge {
  border-radius: 999px;
}
СвойствоОписание
border-bottom-left-radiusСкругляет нижний левый угол. Принимает один радиус (окружность) или два (эллипс).
border-bottom-right-radiusСкругляет нижний правый угол.
border-imageИспользует изображение в качестве рамки, разделяя его на девять областей.
border-image-outsetНасколько рамка из изображения выходит за пределы блока рамки.
border-image-repeatСпособ повтора краёв рамки из изображения: stretched, repeated или rounded.
border-image-sliceДелит исходное изображение на девять частей (четыре угла, четыре края, центр).
border-image-sourceURL изображения или градиент, используемый в качестве рамки.
border-image-widthШирина частей рамки из изображения (может отличаться от CSS-свойства border-width).
border-radiusСокращённое свойство для всех четырёх радиусов углов.
border-top-left-radiusСкругляет верхний левый угол.
border-top-right-radiusСкругляет верхний правый угол.

Цвет и прозрачность

СвойствоОписание
opacityЗадаёт прозрачность всего элемента (и его потомков) от 0 (невидимый) до 1 (полностью непрозрачный). Для прозрачности отдельных каналов используйте rgba() или hsla() в значениях color / background-color.

Фильтры

Свойство filter применяет графические эффекты (размытие, яркость, контраст, тень и т. д.) непосредственно в CSS — без редактора изображений.

.card:hover img {
  filter: brightness(1.1) saturate(1.2);
  transition: filter 0.2s ease;
}

.modal-backdrop {
  filter: blur(4px);
}
СвойствоОписание
filterПрименяет одну или несколько функций фильтра: blur(), brightness(), contrast(), drop-shadow(), grayscale(), hue-rotate(), invert(), opacity(), saturate(), sepia() и url() (SVG-фильтр).

Flexible Box Layout

Flexbox — одномерная модель макета: она распределяет элементы вдоль одной оси (строка или столбец) и автоматически управляет выравниванием, отступами и переносом.

/* Classic centered card */
.card-grid {
  display: flex;
  flex-wrap: wrap;
  gap: 1rem;
  justify-content: center;
  align-items: stretch;
}

.card {
  flex: 1 1 300px; /* grow | shrink | basis */
}

Подробное руководство смотрите в главе The Ultimate Guide to Flexbox.

СвойствоОписание
align-contentВыравнивает строки flex-контейнера по поперечной оси при наличии свободного пространства (flex-start, flex-end, center, space-between, space-around, stretch).
align-itemsВыравнивание по умолчанию для всех flex-элементов контейнера по поперечной оси.
align-selfПереопределяет align-items для отдельного flex-элемента.
flexСокращение для flex-grow, flex-shrink и flex-basis.
flex-basisНачальный размер flex-элемента до распределения свободного пространства.
flex-directionНаправление главной оси: row, row-reverse, column или column-reverse.
flex-flowСокращение для flex-direction и flex-wrap.
flex-growНасколько flex-элемент растёт относительно соседей при наличии свободного пространства.
flex-shrinkНасколько flex-элемент сжимается относительно соседей при нехватке пространства.
flex-wrapПереносятся ли flex-элементы на несколько строк (nowrap, wrap, wrap-reverse).
justify-contentВыравнивает элементы по главной оси (flex-start, flex-end, center, space-between, space-around, space-evenly).
justify-itemsВыравнивание по умолчанию для всех grid-элементов по строчной оси (используется также в CSS Grid).
orderИзменяет визуальный порядок flex- или grid-элемента без изменения порядка в DOM.

Свойства шрифтов

СвойствоОписание
font-size-adjustСохраняет видимый размер текста при недоступности первого шрифта, подбирая размер резервного шрифта по соотношению высоты x.
font-stretchВыбирает суженное или расширенное начертание семейства шрифтов (например, condensed, expanded, ultra-condensed).

CSS Grid

CSS Grid — двумерная система компоновки: она размещает элементы в строки и столбцы одновременно, что делает её идеальной для макетов страниц и сложных сеток компонентов.

/* Three-column responsive grid */
.layout {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
  gap: 1.5rem;
}

/* Named template areas */
.page {
  display: grid;
  grid-template-areas:
    "header header"
    "sidebar main"
    "footer footer";
  grid-template-columns: 200px 1fr;
  grid-template-rows: auto 1fr auto;
}
СвойствоОписание
gridСокращение для всех свойств grid-контейнера.
grid-areaНазначает grid-элемент именованной области или задаёт его позицию по строке/столбцу в виде сокращения.
grid-auto-columnsЗадаёт размер столбца для неявно создаваемых треков (когда элементы выходят за пределы явной сетки).
grid-auto-flowУправляет заполнением сетки автоматически размещаемыми элементами (row, column, dense).
grid-auto-rowsЗадаёт размер строки для неявно создаваемых треков.
grid-columnСокращение для grid-column-start и grid-column-end.
grid-column-endКонечная позиция элемента по оси столбцов (номер линии, span или имя).
grid-column-gapПромежуток между столбцами (заменён свойством column-gap в современном CSS).
grid-column-startНачальная позиция элемента по оси столбцов.
grid-gapСокращение для row-gap и column-gap (устаревшее название; предпочтительно использовать gap).
grid-rowСокращение для grid-row-start и grid-row-end.
grid-row-endКонечная позиция элемента по оси строк.
grid-row-gapПромежуток между строками (заменён свойством row-gap в современном CSS).
grid-row-startНачальная позиция элемента по оси строк.
grid-templateСокращение для grid-template-rows, grid-template-columns и grid-template-areas.
grid-template-areasОпределяет именованные области шаблона с помощью строкового ASCII-синтаксиса.
grid-template-columnsЗадаёт количество и размер явных столбцов (длины, проценты, единицы fr, repeat(), minmax()).
grid-template-rowsЗадаёт количество и размер явных строк.

Свойства многоколоночного макета

Многоколоночный макет автоматически распределяет содержимое по заданному количеству или ширине столбцов — похоже на газетную вёрстку.

/* Two-column article body */
.article-body {
  columns: 2 400px;   /* shorthand: column-count column-width */
  column-gap: 2rem;
  column-rule: 1px solid #ddd;
}

h2 {
  column-span: all; /* heading breaks out of columns */
}
СвойствоОписание
column-countКоличество столбцов, на которые делится содержимое.
column-fillВыравниваются ли столбцы по высоте (balance) или заполняются последовательно (auto).
column-gapПромежуток между столбцами (используется также в Flexbox и CSS Grid).
column-ruleСокращение для разделительной линии между столбцами (стиль, ширина, цвет).
column-rule-colorЦвет разделительной линии между столбцами.
column-rule-styleСтиль линии разделителя (solid, dashed, dotted и т. д.).
column-rule-widthТолщина разделительной линии между столбцами.
column-spanЗанимает ли элемент один столбец (none) или все столбцы (all).
column-widthОптимальная ширина столбца; браузер создаёт столько столбцов, сколько помещается.
columnsСокращение для column-count и column-width.

Свойства контура

СвойствоОписание
outline-offsetСмещает контур от края рамки элемента (положительное значение = наружу; отрицательное = внутрь). В отличие от отступов, не влияет на макет.

Свойства текста

CSS3 добавил управление переполнением текста, переносами, тенями и тонкую настройку стиля декоративных линий.

/* Truncate long titles with ellipsis */
.card-title {
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

/* Subtle heading shadow */
h1 {
  text-shadow: 1px 2px 4px rgba(0, 0, 0, 0.25);
}
СвойствоОписание
tab-sizeШирина символа табуляции в блоках <pre> и кода (число пробелов или длина).
text-align-lastВыравнивание последней (или единственной) строки в блоке выровненного по ширине текста.
text-decoration-colorЦвет подчёркивания, надчёркивания или перечёркивания.
text-decoration-lineКакие декоративные линии отображаются: underline, overline, line-through или none.
text-decoration-styleСтиль декоративной линии: solid, double, dotted, dashed или wavy.
text-justifyМетод выравнивания при активном text-align: justify (auto, inter-word, inter-character).
text-overflowОбозначение переполнения строчного текста: clip (обрезать) или ellipsis (показать ). Требует overflow: hidden и white-space: nowrap.
text-shadowДобавляет одну или несколько теней к тексту. Синтаксис: offset-x offset-y blur-radius color.
word-breakМесто переноса строки внутри слов: normal, break-all или keep-all.
word-wrapРазрешает ли браузер разбивать неразрывное слово для предотвращения переполнения (normal или break-word). Стандартизировано также как overflow-wrap.

Свойства трансформаций

Трансформации перемещают, поворачивают, масштабируют или наклоняют элементы в двумерном или трёхмерном пространстве, не влияя на поток документа.

/* 2D card flip on hover */
.card {
  perspective: 600px;
  transform-style: preserve-3d;
  transition: transform 0.5s ease;
}

.card:hover {
  transform: rotateY(180deg);
}

.card-back {
  backface-visibility: hidden;
}
СвойствоОписание
backface-visibilityВидна ли обратная сторона 3D-трансформированного элемента, когда она повёрнута от зрителя (visible или hidden). Необходимо для эффекта переворота карточки.
perspectiveРасстояние от зрителя до плоскости z=0; меньшее значение = более выраженный 3D-эффект. Применяется к родительскому элементу трансформируемого элемента.
perspective-originПозиция x/y точки схода для трансформации perspective.
transformПрименяет функции двумерной или трёхмерной трансформации: translate(), rotate(), scale(), skew(), matrix() и их 3D-варианты.
transform-originТочка, вокруг которой применяется трансформация (по умолчанию: 50% 50% — центр элемента).
transform-styleОтображаются ли дочерние элементы в 3D-пространстве (preserve-3d) или сглаживаются в плоскость элемента (flat).

Свойства переходов

Переходы анимируют изменение свойства от одного значения к другому за указанное время при изменении CSS-свойства (например, при :hover).

/* Smooth color + shadow on hover */
.btn {
  background-color: steelblue;
  box-shadow: none;
  transition: background-color 0.2s ease, box-shadow 0.2s ease;
}

.btn:hover {
  background-color: dodgerblue;
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.2);
}

Переходы vs. анимации: используйте transition для изменений, обусловленных состоянием (hover, focus, active) — их проще записывать. Используйте animation с @keyframes для независимого, циклического или многошагового движения, которое воспроизводится без взаимодействия с пользователем.

СвойствоОписание
transitionСокращение для transition-property, transition-duration, transition-timing-function и transition-delay.
transition-delayВремя ожидания перед началом перехода.
transition-durationДлительность перехода от начала до конца.
transition-propertyКакое CSS-свойство (или all) охватывает переход.
transition-timing-functionКривая скорости перехода (ease, linear, ease-in, ease-out, ease-in-out, cubic-bezier(…), steps(…)).

Свойства визуального форматирования

СвойствоОписание
box-shadowДобавляет одну или несколько теней вокруг блока элемента. Синтаксис: offset-x offset-y blur spread color. Используйте inset для внутренней тени.
box-sizingОпределяет, включают ли width и height padding и рамку (border-box) или нет (content-box — стандарт CSS2). Большинство современных проектов задают *, *::before, *::after { box-sizing: border-box; }.
overflow-xУправляет горизонтальным переполнением: visible, hidden, clip, scroll или auto.
overflow-yУправляет вертикальным переполнением: visible, hidden, clip, scroll или auto.
resizeПозволяет пользователю изменять размер элемента: both, horizontal, vertical или none. Требует, чтобы overflow не было равно visible.

Связанные материалы

Как только вы определились с нужным свойством, эти главы подробно рассматривают наиболее востребованные возможности CSS3:

Практика

Практика
Какие из следующих свойств являются корректными свойствами CSS3?
Какие из следующих свойств являются корректными свойствами CSS3?
Was this page helpful?