CSS

Свойства CSS

Девяносто свойств по темам: значения, короткий пример, подводные камни.

Найдено: 136 из 136

Текст и шрифт

Свойство Что делает Пример Избранное
color Цвет текста
color: #6544e0;
font-family Стек шрифтов. Родовое имя — последним
font-family: "Manrope", system-ui, sans-serif;
font-size Размер шрифта. Основной текст 16–18px
font-size: 1.0625rem;
font-weight Насыщенность: 100–900
font-weight: 700;
font-style Курсив
font-style: italic;
line-height Межстрочный интервал. Числом без единиц
line-height: 1.7;
letter-spacing Расстояние между буквами. В em
letter-spacing: -0.02em;
text-align Выравнивание текста
text-align: center;
text-transform Регистр: верхний, нижний, с заглавной
text-transform: uppercase;
text-decoration Подчёркивание и зачёркивание
text-decoration: none;
text-underline-offset Отступ подчёркивания от текста
text-underline-offset: 3px;
text-shadow Тень у текста
text-shadow: 0 2px 12px rgb(0 0 0 / .5);
text-wrap balance — ровные строки заголовка, pretty — без висячих слов
text-wrap: balance;
white-space Как обрабатывать пробелы и переносы
white-space: nowrap;
overflow-wrap Разрешить разрыв длинных слов
overflow-wrap: break-word;
writing-mode Направление письма: вертикальный текст
writing-mode: vertical-rl;

Коробка: размеры и отступы

Свойство Что делает Пример Избранное
box-sizing Входят ли padding и border в width. Первое правило проекта
box-sizing: border-box;
width / height Жёсткие размеры. Используй осторожно
width: 280px;
max-width Не шире заданного. Основной инструмент
max-width: 68ch;
min-height Не ниже заданного, но может вырасти
min-height: 100vh;
padding Внутренний отступ. Верх → право → низ → лево
padding: 16px 24px;
margin Внешний отступ. Вертикальные схлопываются
margin: 0 0 1rem;
margin: 0 auto Центрирует блок по горизонтали
margin: 0 auto;
margin-inline Отступы по горизонтали одной строкой
margin-inline: auto;
margin-block Логическая пара по вертикали: сверху и снизу
margin-block: 0 1.5rem;
padding-inline Внутренние отступы по строке письма
padding-inline: 1.25rem;
padding-block Внутренние отступы поперёк строки
padding-block: 2rem;
border-inline-start Рамка со стороны начала строки, а не слева
border-inline-start: 3px solid var(--accent);
inline-size / block-size Логические ширина и высота
inline-size: min(100%, 60ch);
content-visibility Не рисовать то, что за экраном
content-visibility: auto;
contain-intrinsic-size Заглушка высоты для content-visibility
contain-intrinsic-size: auto 400px;
aspect-ratio Соотношение сторон без костылей
aspect-ratio: 16 / 9;
overflow Что делать с тем, что не влезло
overflow: auto;
display Как элемент участвует в потоке
display: flex;
visibility Спрятать, оставив место
visibility: hidden;

Flexbox

Свойство Что делает Пример Избранное
display: flex Делает элемент флекс-контейнером. Пишется родителю
display: flex;
flex-direction Направление главной оси
flex-direction: column;
justify-content Распределение вдоль главной оси
justify-content: space-between;
align-items Выравнивание поперёк главной оси
align-items: center;
align-self Переопределить выравнивание одного элемента
align-self: flex-end;
flex-wrap Разрешить перенос на новую строку
flex-wrap: wrap;
gap Расстояние между элементами
gap: 16px;
flex grow, shrink и basis одной строкой
flex: 1 1 240px;
flex-grow Насколько жадно забирает свободное место
flex-grow: 1;
flex-shrink Насколько охотно сжимается
flex-shrink: 0;
order Визуальный порядок. Ломает порядок фокуса
order: -1;
margin-left: auto Прижать элемент к правому краю
margin-left: auto;

CSS Grid

Свойство Что делает Пример Избранное
display: grid Делает элемент грид-контейнером
display: grid;
grid-template-columns Сколько колонок и какой ширины
grid-template-columns: 240px 1fr;
grid-template-rows То же для строк
grid-template-rows: auto 1fr auto;
fr Доля свободного места. Учитывает gap
grid-template-columns: 2fr 1fr;
repeat() Повторить дорожку несколько раз
repeat(12, 1fr)
minmax() Минимальный и максимальный размер дорожки
minmax(220px, 1fr)
auto-fit Столько колонок, сколько поместится
repeat(auto-fit, minmax(220px, 1fr))
grid-template-areas Раскладка схемой из имён
grid-template-areas: "header header" "nav main";
grid-area Назначить элементу область
grid-area: header;
grid-column От какой линии до какой
grid-column: 1 / -1;
span Занять несколько дорожек
grid-column: span 2;
place-items Центрирование по обеим осям одной строкой
place-items: center;
auto-fill Как auto-fit, но пустые колонки остаются
repeat(auto-fill, minmax(200px, 1fr))
grid-auto-rows Размер строк, которые сетка создаёт сама
grid-auto-rows: minmax(160px, auto);
grid-auto-flow Куда складывать элементы без явного места
grid-auto-flow: dense;
subgrid Ребёнок наследует дорожки родителя
grid-template-rows: subgrid;

Позиционирование

Свойство Что делает Пример Избранное
position: relative Сдвиг от себя. Точка отсчёта для детей
position: relative;
position: absolute Выход из потока. Считает от позиционированного предка
position: absolute; top: 12px; right: 12px;
position: fixed Привязка к окну браузера
position: fixed; bottom: 20px;
position: sticky Прилипает при прокрутке. Нужна координата
position: sticky; top: 0;
inset Все четыре координаты одной строкой
inset: 0;
z-index Порядок слоёв. Работает только с position
z-index: 10;
isolation Создать свой контекст наложения
isolation: isolate;

Фон, рамки, тени

Свойство Что делает Пример Избранное
background Цвет, картинка, градиент — всё сразу
background: #f4f4f8;
background-size cover заполняет и обрезает, contain вписывает целиком
background-size: cover;
background-position Куда поставить картинку
background-position: center;
linear-gradient() Линейный градиент. 0deg — снизу вверх
background: linear-gradient(135deg, #7c5cff, #b06cff);
radial-gradient() Радиальный градиент от точки
background: radial-gradient(circle at 30% 20%, #b06cff, transparent);
border Рамка. Толщина, стиль, цвет
border: 2px solid #e0e0ea;
border-radius Скругление углов
border-radius: 14px;
box-shadow Тень: X, Y, размытие, растяжение, цвет
box-shadow: 0 12px 28px -8px rgb(20 24 48 / .3);
outline Обводка поверх, не занимает места
outline: 2px solid #6544e0;
outline-offset Отступ обводки от края
outline-offset: 3px;
opacity Прозрачность всего элемента
opacity: .5;
filter Обработка самого элемента
filter: blur(4px) grayscale(1);
backdrop-filter Размытие того, что под элементом
backdrop-filter: blur(14px);
mix-blend-mode Режим смешивания со слоем ниже
mix-blend-mode: multiply;
background-blend-mode Смешивание слоёв фона между собой
background-blend-mode: overlay;
clip-path Обрезка по фигуре. Обрезанное не кликается
clip-path: polygon(0 0, 100% 0, 100% 85%, 0 100%);
mask-image Маска по прозрачности: градиент или SVG
mask-image: linear-gradient(#000, transparent);
mask-size / mask-repeat Ведут себя как одноимённые свойства фона
mask-size: contain; mask-repeat: no-repeat;
object-fit Как картинка ложится в свою коробку
object-fit: cover;
object-position Какую часть картинки оставить видимой
object-position: 50% 20%;

Анимация и 3D

Свойство Что делает Пример Избранное
transition Плавное изменение. Пиши в базовом состоянии
transition: transform 200ms ease-out;
transform Сдвиг, масштаб, поворот. Не трогает раскладку
transform: translateY(-4px) scale(1.03);
translate / scale / rotate Отдельные свойства, не конфликтуют между собой
translate: 0 -4px;
@keyframes Набор кадров анимации
@keyframes appear { from { opacity: 0 } }
animation Имя, длительность, кривая, режим заливки
animation: appear .5s ease-out both;
animation-delay Задержка перед стартом. Для каскада
animation-delay: 80ms;
cubic-bezier() Своя кривая ускорения
cubic-bezier(.22, 1, .36, 1)
perspective Расстояние до зрителя. Без неё нет объёма
perspective: 900px;
transform-style preserve-3d сохраняет объём у детей
transform-style: preserve-3d;
backface-visibility Показывать ли изнанку повёрнутого элемента
backface-visibility: hidden;
will-change Подготовить элемент к анимации. Не злоупотребляй
will-change: transform;
scroll-behavior Плавная прокрутка к якорям
scroll-behavior: smooth;
scroll-margin-top Отступ при прыжке к якорю под липкой шапкой
scroll-margin-top: 80px;

Переменные, функции, запросы

Свойство Что делает Пример Избранное
@layer Слой каскада. Порядок объявления решает спор, а не вес
@layer base, components, utilities;
container-type Сделать элемент контейнером для @container
container-type: inline-size;
container-name Имя контейнера, если их несколько
container: card / inline-size;
cqw / cqi Единицы от ширины контейнера, а не окна
font-size: clamp(1rem, 4cqi, 2rem);
@font-face Подключение своего шрифта
@font-face { font-family: "Onest"; src: url(onest.woff2) format("woff2"); }
font-display Что показывать, пока шрифт грузится
font-display: swap;
--custom-property Переменная. Объявляют в :root
--accent: #6544e0;
var() Чтение переменной. Второй аргумент — запасное значение
color: var(--accent, #000);
calc() Арифметика прямо в значении
width: calc(100% - 2rem);
clamp() Минимум, желаемое, максимум
font-size: clamp(1.8rem, 1.2rem + 3vw, 3.5rem);
min() / max() Выбор меньшего или большего значения
width: min(100% - 2rem, 1200px);
color-mix() Смешать два цвета
background: color-mix(in oklab, var(--accent) 20%, white);
@media (min-width) Медиазапрос по ширине. Mobile-first
@media (min-width: 700px) {}
prefers-color-scheme Системная тема человека
@media (prefers-color-scheme: dark) {}
prefers-reduced-motion Человеку мешает движение
@media (prefers-reduced-motion: reduce) {}
@container Запрос по ширине родителя, а не окна
@container (min-width: 400px) {}
@supports Применить, только если свойство поддерживается
@supports (backdrop-filter: blur(1px)) {}
@import Подключить другой файл стилей. Тормозит загрузку
@import "base.css";

Селекторы

Свойство Что делает Пример Избранное
.class По классу. Основной инструмент
.card {}
#id По идентификатору. В стилях лучше не использовать
#hero {}
A B Потомок на любой глубине
.card p {}
A > B Прямой ребёнок
.list > li {}
A + B Следующий сосед
h2 + p {}
[attr] По наличию или значению атрибута
a[target="_blank"] {}
:hover Курсор над элементом
.btn:hover {}
:focus-visible Фокус пришёл с клавиатуры
.btn:focus-visible {}
:nth-child() По порядковому номеру. Принимает формулу
li:nth-child(odd) {}
:not() Все, кроме подходящих
p:not(.lead) {}
:has() Элемент, внутри которого есть указанное
.card:has(img) {}
:is() Скобки вместо перечисления через запятую
.card :is(h2, h3, h4) {}
:where() То же, но с нулевым весом
:where(h1, h2) {}
:user-invalid Поле заполнено неверно и человек уже уходил из него
input:user-invalid { border-color: red; }
::before / ::after Псевдоэлемент. Нужен content
.item::before { content: "✓"; }