🕐 9 хв читання

Контентні теги

Теги для розмітки текстового вмісту сторінки: заголовки, абзаци, списки, зображення. CSS-властивості блочної моделі та нові типи селекторів.

Заголовки: h1 — h6

Заголовки — головний спосіб структурування інформації на сторінці. HTML надає шість рівнів заголовків: від <h1> до <h6>. На практиці зазвичай вистачає 3–4 рівнів навіть для складних сторінок.

Правила використання

  • <h1> — головний заголовок сторінки, має бути лише один на сторінку. Він інтенсивно індексується пошуковими системами.
  • Рівні йдуть послідовно: h1 → h2 → h3 → h4. Не можна пропускати рівні (наприклад, одразу після h1 ставити h4).
  • Заголовки одного рівня можуть повторюватися скільки завгодно разів.
  • Навіть якщо дизайнер не намалював головний заголовок — все одно зверстайте <h1> і сховайте його візуально через CSS.
Рівень заголовка визначається логічною структурою документа, а не його візуальним розміром. Зовнішній вигляд задає CSS.
Стаття про Шевченка: <h1> — «Тарас Шевченко», <h2> — «Біографія» та «Творчість», <h3> — «Дитинство», «Молодість» тощо.

Абзаци: <p>

Тег <p> (paragraph) розмічає фрагмент тексту, об'єднаний спільним змістом. Назви розділів або рубрик абзацом верстати не слід — для них є заголовки.

Важливі нюанси

  • Тег <p> сам по собі не додає відступу — відступи створюються стилями браузера за замовчуванням. У реальному макеті між абзацами може взагалі не бути відстані.
  • Якщо абзац цільний, залишайте його в одному рядку коду (переноси стосуються лише ширини вікна редактора).
  • Оформлення відкриваючого і закриваючого тегів має бути однотипним: або обидва на окремих рядках, або обидва на одному рядку з текстом.

Міжрядковий інтервал: line-height

CSS-властивість line-height задає відстань між рядками тексту.

Абсолютне значення (у пікселях)

p {
  line-height: 24px;
}

Міжрядковий інтервал фіксується жорстко. Якщо розмір шрифту зміниться — інтервал залишиться тим самим, і текст може виглядати «злиплим» або занадто розрідженим.

Відносне значення (без одиниць виміру)

Відносна одиниця — це частка від розміру шрифту. Записується без одиниць виміру:

p {
  line-height: 1.5;
}

Якщо font-size: 16px, то line-height: 1.5 = 16 × 1.5 = 24px.

Формула розрахунку: line-height = потрібний_інтервал_px ÷ font-size_px. Наприклад, 24 ÷ 16 = 1.5.

Перевага відносних одиниць: при будь-якій зміні розміру шрифту line-height перераховується автоматично, і візуально кількість «повітря» між рядками залишається пропорційною.

Побачити, у що браузер перерахував значення, можна на вкладці Computed у DevTools.

Розмір шрифту за замовчуванням для сторінки — 16px. Якщо ви не задали font-size для елемента, він успадковує це значення.

Списки: <ol>, <ul>, <li>

Для розмітки переліків використовуються теги списків. Кожен елемент списку обгортається тегом <li> (list item).

Два типи списків

Тег Тип Коли використовувати
<ol> Упорядкований (Ordered List) Порядок елементів важливий (кроки інструкції, хронологія подій)
<ul> Неупорядкований (Unordered List) Порядок елементів не важливий (пункти меню, перелік навичок)
Називати списки «маркований» і «нумерований» не зовсім коректно: маркери та нумерація — це лише стилізація через CSS. Вибір тегу визначається логікою переліку, а не його зовнішнім виглядом.

Правила вкладеності

  • Усередині <ol> або <ul> можуть бути лише теги <li> — жодних інших тегів безпосередньо всередині списку.
  • Усередині <li> можна використовувати будь-які теги: абзаци, зображення, таблиці, інші списки тощо.
  • Вкладений список розміщується всередині тегу <li> батьківського списку.

Стилізація маркерів: list-style-type

CSS-властивість list-style-type змінює тип маркера або нумерації:

ol {
  list-style-type: disc;  /* чорний кружечок замість цифр */
}

Популярні значення: disc, circle, square, decimal, lower-alpha, none. Повний перелік — у довіднику MDN: list-style-type.

Упорядкований список <ol> можна стилізувати маркерами (кружечками), а неупорядкований <ul> — нумерацією. Тег визначає семантику, а CSS — зовнішній вигляд.

Для чого потрібна семантика списків

Скрін-рідери (програми для незрячих) озвучують тип списку: «упорядкований список, 5 пунктів» або «неупорядкований список». Коректна розмітка робить сайт доступним для всіх користувачів і підвищує позицію в пошуковій видачі.

Зображення: <img>

Тег <img> — одиночний (без закриваючої частини), вставляє зображення на сторінку. Має два обов'язкові атрибути.

Атрибут src

src (source) — шлях до зображення. Може бути абсолютним (URL з інтернету) або відносним (шлях до локального файлу).

<img src="images/photo.jpg" alt="Опис зображення">
Часта помилка: пишуть scr замість src. Пам'ятайте: s-r-c (source).

Атрибут alt

alt (alternative text) — альтернативний текст. Він потрібен для трьох цілей:

  1. Якщо зображення не завантажиться — браузер покаже текст з alt замість картинки.
  2. Для пошукових систем — пошуковики не «бачать» зображення, вони індексують значення alt і використовують його у пошуку по зображеннях.
  3. Для скрін-рідерів — незрячі користувачі чують опис зображення, коли фокус потрапляє на нього.
alt — це не спливаюча підказка. Для підказки використовується атрибут title. Вони не мають бути однаковими.

Атрибут title

Універсальний атрибут для будь-якого тегу. При наведенні курсора з'являється спливаюча підказка. Корисно для іконкових інтерфейсів, де не завжди зрозуміло, що робить кнопка.

Стилізувати title через CSS не можна. Для кастомної підказки потрібен JavaScript.

Зображення з підписом: <figure> і <figcaption>

Якщо зображення має пояснювальний підпис — використовуйте обгортку <figure> та тег підпису <figcaption>.

<figure>
  <img src="photo.jpg" alt="Опис">
  <figcaption>Підпис до зображення</figcaption>
</figure>

Особливості

  • <figure> — семантична обгортка, що вказує браузеру: тут пов'язаний з контентом медіаелемент (картинка, відео, код тощо).
  • Усередині <figure> може бути лише один <figcaption>.
  • <figcaption> є необов'язковим — його може не бути.
  • <figure> — це не картинка. Контентне зображення — лише <img>.
  • У тексті не слід посилатися на місцеположення figure («як показано на рисунку вище»). Натомість використовуйте номерні посилання («рисунок 1»), щоб при переміщенні блоку логіка не порушувалась.
Якщо у картинки немає підпису, але вона безпосередньо доповнює текст — її все одно можна обгорнути в <figure>.

Обтікання тексту: float

CSS-властивість float змушує елемент «плавати» до лівого або правого краю, а текст — обтікати його з протилежного боку.

Значення Ефект
left Елемент притискається ліворуч, текст обтікає справа
right Елемент притискається праворуч, текст обтікає зліва
none Без обтікання (за замовчуванням)
figure {
  float: left;
}
float призначений виключно для обтікання тексту. Не використовуйте його для створення розкладки сторінки (сайдбар + контент). Для розкладки існують Flexbox і CSS Grid.

Якщо картинка обгорнута в <figure> — обтікати потрібно саме figure (найзовнішній батьківський тег).

Внутрішні відступи: padding

Властивість padding задає відступи від меж елемента всередину, до його вмісту. Це аналог полів у документі — відстань від краю аркуша до тексту.

Підробні властивості

Властивість Сторона
padding-top Верхній відступ
padding-right Правий відступ
padding-bottom Нижній відступ
padding-left Лівий відступ

Скорочений запис

Запис Значення
padding: 10px 20px 15px 5px; верх, право, низ, лів (за годинниковою стрілкою)
padding: 10px 20px 15px; верх, ліво+право, низ
padding: 10px 20px; верх+низ, ліво+право
padding: 10px; однаково з усіх боків
Не задати властивість і задати 0 — це різні речі в CSS. Якщо не задати — елемент може успадкувати значення з браузерних стилів або з інших правил.
Використовуйте скорочений запис padding лише тоді, коли вам потрібно задати всі чотири сторони. Якщо потрібні лише деякі — пишіть підробні властивості (padding-top, padding-left тощо).

Рамка: border

Рамка (border) знаходиться зовні від padding. За замовчуванням вона невидима у всіх елементів, але доступна для стилізації.

Три складові рамки

Властивість Що задає Приклад
border-width Товщина 2px
border-style Стиль solid, dashed, dotted, double, none
border-color Колір #ddd, red

Кожна з цих властивостей має 4 підвластивості для окремих сторін (наприклад, border-top-width, border-left-style тощо).

Скорочений запис

Якщо всі 4 сторони однакові, використовуйте:

figure {
  border: 2px solid #ddd;  /* товщина стиль колір */
  padding: 15px;
}
Порядок у скороченому записі: товщина → стиль → колір. Дробні значення товщини краще не використовувати — різні браузери можуть округлювати їх по-різному.

Зовнішні відступи: margin

Властивість margin задає відступи зовні від елемента. Синтаксис і скорочений запис — абсолютно такі самі, як у padding.

figure {
  margin: 0 30px 25px 0;  /* верх право низ лів */
}
Якщо потрібно обнулити зовнішні відступи, задані у стилях браузера, — пишіть margin: 0 явно, а не просто не задавайте їх.

Блочна модель: загальна картина

margin (зовнішній відступ)
border (рамка)
padding (внутрішній відступ)
content (вміст)

У DevTools: голубий — контент, зелений — padding, жовтий — border, оранжевий — margin.

Інлайнова розмітка: <span>

Тег <span> — універсальний інлайновий контейнер без власного семантичного значення. Використовується для стилізації окремих слів або словосполучень.

Коли <span>
  • Потрібно візуально виділити текст (жирний, курсив, колір), але він не є акцентним за змістом
  • Немає відповідного семантичного тегу
Коли <strong> / <em>
  • Текст потрібно виділити саме за змістом: це важлива інформація для пошуковиків і скрін-рідерів
Тег <b> не рекомендований для стилізації. Усе оформлення — лише через CSS. Тег <strong> — лише для семантичного акценту.
Усі семантичні теги (<h1><h6>, <p>, <ol>, <ul>, <strong>, <figure> тощо) працюють для трьох цілей: пошукові системи, скрін-рідери та зручність читання вихідного коду.

Нові типи селекторів

Селектор за тегом (вже відомий)

p { color: #333; }

Застосовується до всіх елементів з таким тегом.

Селектор за ідентифікатором: #id

<p id="intro">Текст</p>

#intro { color: blue; }
  • Атрибут id — універсальний, можна задати будь-якому тегу.
  • Значення id має бути унікальним на сторінці — два елементи з однаковим id це невалідний код.
  • У CSS селектор починається з # (решітка).
id не рекомендується використовувати для стилізації. У нього дуже високий пріоритет (специфічність), що ускладнює перевизначення стилів. Ідентифікатори використовують переважно для JavaScript та якірних посилань.

Селектор за класом: .class

<span class="book-name">Кобзар</span>

.book-name { font-weight: bold; }
  • Клас може повторюватись у необмеженій кількості елементів.
  • У CSS селектор починається з . (крапка).
  • Один елемент може мати кілька класів, перерахованих через пробіл: class="book-name primary".
  • Називайте класи за призначенням елемента, а не за його виглядом.
Два класи на одному елементі: <span class="book-name primary"> — отримає стилі і від .book-name, і від .primary.

Порівняння селекторів

За тегом За id За класом
Синтаксис p { } #name { } .name { }
Може повторюватись Так (теги) Ні (унікальний) Так
Кілька на елементі Лише 1 Скільки завгодно
Рекомендація Для базових стилів Не для стилізації Основний спосіб
Якщо два класи задають одну й ту саму властивість з різними значеннями — переможе те правило, що стоїть пізніше у CSS-файлі. Порядок класів в атрибуті class не має значення.

Форматування коду

Дотримуйтесь однакового стилю оформлення:

  • Вкладені теги мають мати відступ 2 пробіли відносно батьківського тегу.
  • У редакторах коду та пісочницях (CodePen тощо) є функція автоформатування — використовуйте її перед перевіркою.
  • Оформлення відкриваючого і закриваючого тегів має бути послідовним.

Мультирядкове редагування

Два способи одночасного редагування кількох рядків у редакторі:

  • Cmd (Mac) / Ctrl (Windows) + клік — клікнути у потрібні рядки, курсор розширюється на кілька рядків одразу.
  • Alt/Option + перетягування — «розтягнути» курсор вертикально на послідовні рядки (прямокутне виділення).

Поради початківцям

  • Не бійтеся ставити запитання. Дурних запитань не існує. Будь-яке запитання веде до розуміння.
  • Ставте конкретні запитання. Замість «нічого не зрозуміло» — «що означає ось ця властивість?».
  • Не списуйте. Рішення, зроблене іншою людиною, не відкладається у вашій голові.
  • Забудьте про оптимізацію на найближчі два роки. Не економте рядки коду. Якщо потрібно задати лише 2 відступи — пишіть 2 підробні властивості, а не скорочений запис.
  • Звикайте до оформлення коду одразу. Вся розробка будується на дотриманні стайл-гайдів.
  • Доходьте до рішення самостійно. Наставник лише м'яко спрямовує підказками — і це правильний підхід.

Підсумки

Що розібрали на цій лекції:

  1. Заголовки <h1><h6> — рівні та правила використання
  2. Абзаци <p> — розмітка текстових фрагментів
  3. Списки <ol>, <ul>, <li> — упорядковані та неупорядковані
  4. Зображення <img> — атрибути src, alt, title
  5. Зображення з підписом <figure> + <figcaption>
  6. CSS-властивості блочної моделі: padding, border, margin
  7. line-height — абсолютні та відносні значення
  8. list-style-type — стилізація маркерів списків
  9. float — обтікання тексту (і лише обтікання!)
  10. Селектор за id (#) та селектор за класом (.)
  11. Тег <span> — інлайнова стилізація тексту без семантичного значення
🔍
Почніть вводити назву лекції або тему