CSS (Cascading Style Sheets) — мова стилів для опису зовнішнього вигляду HTML-елементів: кольори, шрифти, відступи, позиціонування тощо.
<h1 style="color:red">Текст</h1>
<style>h1 {color:red;}</style>
у <head>
<link rel="stylesheet" href="style.css">
Селектори визначають, до яких HTML-елементів застосовувати стиль: по тегу, класу, id або атрибуту.
p { color: blue; }
.button { padding: 10px; }
#header { background: gray; }
* { margin: 0; }
div p { font-size: 14px; }
CSS застосовує стилі за пріоритетом: Inline > Internal > External; також враховується специфічність селекторів.
Специфічність визначає, який стиль переважатиме при конфлікті. Враховується тип селектора (id > клас > тег) і порядок у коді.
:hover
, :focus
— стиль для стану елемента::before
, ::after
— створюють віртуальні елементиМожна задавати кольори через назви, HEX, RGB, RGBA, HSL, HSLA:
color: red;
color: #ff0000;
color: rgb(255,0,0);
color: rgba(255,0,0,0.5);
color: hsl(0, 100%, 50%);
Через властивості font-family
, font-size
, font-weight
, font-style
.
margin
— зовнішній відступ, padding
— внутрішній відступ елемента.
Межа елемента: border-width
, border-style
, border-color
. Можна задавати окремо або скорочено: border: 1px solid black;
.
Контролює, як елемент відображається:
block
— блочний елементinline
— вбудований елементinline-block
— як inline, але з блоковими властивостямиnone
— приховати елементВластивість position
визначає спосіб розташування елемента:
static
— за замовчуваннямrelative
— відносно звичайного місцяabsolute
— відносно найближчого позиційованого предкаfixed
— фіксовано на екраніsticky
— прилипає під час прокруткиfloat
переміщує елемент вліво/вправо, clear
зупиняє обтікання попередніх елементів.
Flexbox — сучасний метод верстки:
flex
CSS Grid дозволяє створювати двовимірні макети:
grid
Контролює порядок нашарування елементів. Вищий z-index
знаходиться поверх елементів з меншим значенням.
Визначає прозорість елемента: opacity: 0.5;
робить елемент напівпрозорим.
Додають плавні анімації при зміні властивостей:
transition: all 0.3s ease;
Дозволяє змінювати елемент: translate
, rotate
, scale
, skew
.
CSS-анімації дозволяють створювати складні ефекти за допомогою @keyframes
та властивості animation
.
Визначає ключові кадри анімації, наприклад:
@keyframes slide { from {left:0;} to {left:100px;} }
Визначає, як обчислюються ширина і висота елемента: content-box
або border-box
.
Додають віртуальні елементи до контенту елемента для декоративних ефектів.
Дозволяють адаптувати стиль під різні пристрої:
@media (max-width: 768px) { body { font-size: 14px; } }
Viewport — видима область браузера. Через медіа-запити і відносні одиниці стилі підлаштовуються під розмір екрану.
Властивість flex-wrap
визначає, чи будуть елементи flex-контейнера переноситися на новий рядок.
Вирівнює елементи по головній осі flex-контейнера (start, center, space-between тощо).
Вирівнює елементи по поперечній осі flex-контейнера (stretch, center, flex-start, flex-end).
Обмежують мінімальну та максимальну ширину елемента, щоб він не виходив за рамки.
Обмежують мінімальну та максимальну висоту елемента.
visible
— контент виходить за межіhidden
— обрізає зайвеscroll
— додає скроллauto
— скролл, якщо потрібноВластивість для обрізки елемента за формою (circle, polygon, inset тощо).
Градієнти для фону: linear-gradient
, radial-gradient
, conic-gradient
.
Контролює розмір фонового зображення: cover
, contain
, конкретні значення px/%.
Визначає позицію фонового зображення: top, center, bottom, left, right, або %/px.
Додає тінь до елемента: box-shadow: 5px 5px 10px rgba(0,0,0,0.5);
Додає тінь до тексту: text-shadow: 2px 2px 5px gray;
Контролюють перенесення слів, щоб уникнути виходу тексту за межі блока.
Визначає, як обробляються пробіли та перенос рядків: normal, nowrap, pre, pre-wrap, pre-line.
Вирівнює текст по горизонталі: left, right, center, justify.
Вирівнює inline або table-cell елементи по вертикалі: baseline, top, middle, bottom.
Визначає стиль маркерів у списках: list-style-type
, list-style-image
, list-style-position
.
Змінює вигляд курсора: pointer, default, text, move, wait тощо.
Контролює, чи реагує елемент на події миші: none або auto.
Окремо контролюють горизонтальний та вертикальний скролл.
Старий спосіб обрізки елемента за прямокутником (deprecated, замінено на clip-path).
Додає ефекти до елементів: blur, brightness, contrast, grayscale, hue-rotate тощо.
Задає затримку перед початком CSS-переходу.
Визначає тривалість CSS-переходу.
Визначає криву прискорення анімації: linear, ease, ease-in, ease-out, cubic-bezier.
Примушує слова переноситися всередині блоку, щоб не виходили за межі.
Контролює перенесення слів: normal, break-all, keep-all.
Визначає, як зображення/відео вписується у контейнер: fill, contain, cover, none, scale-down.
Визначає позицію зображення/відео всередині контейнера, якщо object-fit
не cover/fill.
Обрізає зайвий контент без скролу, аналог hidden
, але сучасніше.
Дозволяє користувачу змінювати розмір елемента: none, both, horizontal, vertical.
Визначає позицію маркера списку: inside або outside.
Задає власне зображення маркера списку.
Визначає відстань між словами у тексті.
Визначає відстань між літерами у тексті.
Визначає висоту рядка тексту, контролюючи вертикальний відступ між рядками.
Дозволяє обмежити кількість рядків тексту та обрізати зайвий вміст.
Контролює обрізання тексту всередині блоку: clip, ellipsis.
Додає підкреслення, лінії зверху або крізь текст: underline, overline, line-through.
Контролює регістр тексту: uppercase, lowercase, capitalize, none.
Задає напрямок письма: horizontal-tb, vertical-rl, vertical-lr.
Визначає напрям тексту: ltr (left-to-right) або rtl (right-to-left).
Контролює можливість виділення тексту: auto, none, text, all.
Контролює видимість елемента: visible, hidden, collapse.
Визначає прозорість елемента: від 0 (повністю прозорий) до 1 (непрозорий).
Визначає порядок накладання елементів по осі Z (верхній/нижній шар).
Визначає метод позиціонування: static, relative, absolute, fixed, sticky.
Задають відступи від відповідних сторін контейнера для позиціонованого елемента.
Використовується для обтікання елементами (left, right, none), рідко потрібен у сучасному дизайні.
Визначає, як елементи після плаваючих блоків будуть розташовані: none, left, right, both.
Обрізає елемент по колу, наприклад: clip-path: circle(50% at 50% 50%);
Розмиває елемент: filter: blur(5px);
Додає фільтри до елементів, що знаходяться позаду (розмиття, контраст, яскравість).
Обрізає елемент за багатокутником, наприклад: clip-path: polygon(50% 0%, 100% 100%, 0% 100%);
Додає ефект перспективи для 3D-трансформацій: perspective: 1000px;
Дозволяє переміщення, обертання, масштабування та нахил елементів: translate, rotate, scale, skew.
Визначає точку, від якої застосовується трансформація: center, top, left, right, bottom або px/%.
Визначає, чи видно "задню" сторону елемента під час 3D-поворотів: visible або hidden.
Визначає точку зору для перспективи: center, top, bottom, left, right або %/px.
Визначає кількість і ширину колонок у CSS Grid: repeat(3, 1fr), 200px auto тощо.
Визначає кількість і висоту рядків у CSS Grid.
Визначає відстань між рядками і колонками у CSS Grid та Flexbox.
Вирівнює елементи всередині осередків CSS Grid по горизонталі.
Вирівнює елементи всередині осередків CSS Grid по вертикалі.
Скорочення для одночасного визначення align-items
та justify-items
у Grid.
Визначає порядок розміщення елементів у Grid: row, column, dense.
Визначає позицію та розмір елемента у CSS Grid по колонках та рядках.
Визначає позицію та розмір елемента у Grid, об’єднуючи grid-row
та grid-column
.
Вирівнює весь вміст Grid контейнера: скорочення для align-content
+ justify-content
.
Вирівнює окремий елемент Grid по вертикалі та горизонталі: скорочення для align-self
+ justify-self
.
Зображення або відео заповнює контейнер, обрізаючи зайве, зберігаючи пропорції.
Зображення або відео поміщається всередину контейнера без обрізання, зберігаючи пропорції.
Визначає, які властивості елемента будуть анімовані при зміні: all
, opacity
, transform
тощо.
Підказує браузеру, які властивості елемента будуть змінюватися, щоб оптимізувати анімації та рендеринг.
CSS (Cascading Style Sheets) — мова для опису стилів HTML-документів.
За допомогою <link rel="stylesheet" href="style.css">
у <head>
.
CSS, що записується прямо в атрибут style
елемента.
Стилі всередині тегу <style>
у HTML.
Окремий файл зі стилями, підключений через <link>
.
Частина CSS, яка визначає, до яких елементів застосовувати стилі.
Атрибут стилю, який змінює вигляд елемента (наприклад, color
).
За допомогою властивості color
або background-color
.
Назви, HEX, RGB, RGBA, HSL, HSLA.
px, em, rem, %, vh, vw тощо.
Абсолютні (px) — фіксовані, відносні (em, rem, %) — залежать від контексту.
Селектор, що починається з .
(наприклад, .btn
).
Селектор з #
(наприклад, #header
).
*
— вибирає всі елементи.
Застосовує стилі до всіх елементів конкретного тегу (наприклад, p
).
Кілька селекторів через кому (h1, h2, h3 { color: red; }
).
Селектори для відносин: нащадок, дитина, сусід, брат.
Селектор для стану елемента (наприклад, :hover
).
Селектор для частини елемента (::before
, ::after
).
Правило, яке визначає пріоритет стилів (inline > id > клас > тег).
Принцип, за яким браузер вибирає стилі при конфліктах.
Деякі властивості передаються від батьківських елементів дітям.
Через background-color
, background-image
тощо.
Визначає повторення фонового зображення.
Визначає розташування фонового зображення.
Визначає розмір фонового зображення (cover, contain).
Властивість для малювання рамки навколо елемента.
Зовнішній відступ елемента.
Внутрішній відступ елемента.
Модель, яка описує побудову блоку: content, padding, border, margin.
Визначає, чи враховуються padding і border у розмірах елемента (content-box
або border-box
).
Визначає тип відображення елемента: block
, inline
, flex
, grid
тощо.
Тип відображення, який поєднує властивості inline та block.
Визначає, як відображати вміст, що виходить за межі елемента (hidden
, scroll
, auto
).
Визначає спосіб позиціювання елемента: static
, relative
, absolute
, fixed
, sticky
.
relative
зміщує елемент відносно його початкової позиції, а absolute
— відносно найближчого позиціонованого предка.
Елемент прив’язується до вікна браузера, а не до сторінки.
Елемент поводиться як relative
, доки не досягне заданої межі, після чого стає fixed
.
Визначає порядок накладання елементів.
Старий метод вирівнювання елементів ліворуч чи праворуч.
Скасовує обтікання елемента (left
, right
, both
).
CSS-модель для вирівнювання та розподілу простору між елементами.
Робить контейнер гнучким, його діти стають flex-елементами.
Вирівнювання елементів по головній осі.
Вирівнювання елементів по поперечній осі.
Дозволяє елементам переноситися на новий рядок.
Визначає, як елемент розтягується, щоб зайняти вільний простір.
Визначає, як елемент стискається при нестачі простору.
Базовий розмір елемента перед розподілом простору.
Система для створення двовимірних сіток.
Визначає кількість і розміри колонок у сітці.
Визначає кількість і розміри рядків.
Відстань між рядками та колонками (тепер gap
).
Визначає область сітки, яку займає елемент.
Описує шаблон розміщення областей сітки.
Встановлює мінімальне і максимальне значення для треку.
Ключові слова для автоматичного заповнення сітки.
Умови для адаптивних стилів залежно від ширини, висоти екрана тощо.
Правило для написання медіа-запитів.
Підхід, при якому сайт підлаштовується під різні екрани.
Властивість для створення плавних змін стилів.
Використовується для складних анімацій з ключовими кадрами.
Опис проміжних станів анімації (@keyframes
).
Застосовує обертання, масштабування, зсув та інші перетворення.
Переміщення елемента по осях X та Y.
Обертання елемента.
Масштабування елемента.
Нахил елемента.
Підказка браузеру, які властивості змінюватимуться для оптимізації.
Обрізає елемент за заданою формою.
Застосовує графічні ефекти (blur, grayscale, contrast).
Застосовує ефекти до фону позаду елемента.
Кастомні властивості, що починаються з --
.
Оголосити: --main-color: red;
, використати: color: var(--main-color);
.
Функція для математичних розрахунків у CSS.
Функція, яка задає мінімальне, оптимальне і максимальне значення.
Функції для обрання мінімального чи максимального значення.
Одиниці vw
і vh
, що залежать від розміру вікна.
Одиниця виміру, що відповідає ширині символу "0".
Одиниця виміру, що відповідає висоті маленької літери "x".
Стилі для друку, що задаються через @media print
.
Медіа-запит для темної/світлої теми.
Медіа-запит для вимкнення або зменшення анімацій.
Медіа-запити, що базуються на розмірах контейнера, а не вікна.
API для створення кастомних CSS-функцій і властивостей.
Умова, яка перевіряє підтримку властивостей у браузері.
Система каскадування стилів із різних шарів.
Правило для підключення інших CSS-файлів.
Вбудовування критичних стилів у HTML для швидшого рендерингу.
Визначає пріоритет застосування стилів: inline > id > class/attribute/pseudo-class > element/pseudo-element.
Класи, що застосовуються в певних станах елемента, наприклад :hover
, :focus
, :nth-child()
.
Віртуальні елементи, наприклад ::before
та ::after
, для додавання контенту через CSS.
Правила каскадування стилів: порядок, специфічність і важливість визначають фінальний стиль елемента.
Позначка !important
робить стиль пріоритетним над іншими.
Вказує браузеру, що елемент ізольований у певних аспектах для оптимізації рендерингу (contain
).
Властивість isolation: isolate;
створює новий контекст змішування для елементів.
Визначає, як вміст (зображення, відео) заповнює контейнер: cover
, contain
, fill
.
Визначає позицію вмісту всередині контейнера при використанні object-fit
.
Дозволяє елементам "зафіксовуватися" при прокрутці у визначених точках.
Властивості, які адаптуються до напрямку тексту та мови, наприклад margin-inline-start
, padding-block-end
.