Контентні теги
Теги для розмітки текстового вмісту сторінки: заголовки, абзаци, списки, зображення. CSS-властивості блочної моделі та нові типи селекторів.
Заголовки: h1 — h6
Заголовки — головний спосіб структурування інформації на сторінці. HTML надає шість рівнів
заголовків: від <h1> до <h6>. На практиці зазвичай вистачає 3–4 рівнів
навіть для складних сторінок.
Правила використання
<h1>— головний заголовок сторінки, має бути лише один на сторінку. Він інтенсивно індексується пошуковими системами.- Рівні йдуть послідовно:
h1 → h2 → h3 → h4. Не можна пропускати рівні (наприклад, одразу післяh1ставитиh4). - Заголовки одного рівня можуть повторюватися скільки завгодно разів.
- Навіть якщо дизайнер не намалював головний заголовок — все одно зверстайте
<h1>і сховайте його візуально через 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.
font-size
для елемента, він успадковує це значення.
Списки: <ol>, <ul>, <li>
Для розмітки переліків використовуються теги списків. Кожен елемент списку обгортається тегом <li>
(list item).
Два типи списків
| Тег | Тип | Коли використовувати |
|---|---|---|
<ol> |
Упорядкований (Ordered List) | Порядок елементів важливий (кроки інструкції, хронологія подій) |
<ul> |
Неупорядкований (Unordered List) | Порядок елементів не важливий (пункти меню, перелік навичок) |
Правила вкладеності
- Усередині
<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) — альтернативний текст. Він потрібен для трьох цілей:
- Якщо зображення не завантажиться — браузер покаже текст з
altзамість картинки. - Для пошукових систем — пошуковики не «бачать» зображення, вони індексують значення
altі використовують його у пошуку по зображеннях. - Для скрін-рідерів — незрячі користувачі чують опис зображення, коли фокус потрапляє на нього.
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; |
однаково з усіх боків |
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 явно, а не просто не задавайте їх.
Блочна модель: загальна картина
У DevTools: голубий — контент, зелений — padding, жовтий — border, оранжевий — margin.
Інлайнова розмітка: <span>
Тег <span> — універсальний інлайновий контейнер без власного семантичного значення.
Використовується для стилізації окремих слів або словосполучень.
- Потрібно візуально виділити текст (жирний, курсив, колір), але він не є акцентним за змістом
- Немає відповідного семантичного тегу
- Текст потрібно виділити саме за змістом: це важлива інформація для пошуковиків і скрін-рідерів
<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 | Скільки завгодно |
| Рекомендація | Для базових стилів | Не для стилізації | Основний спосіб |
class не має
значення.
Форматування коду
Дотримуйтесь однакового стилю оформлення:
- Вкладені теги мають мати відступ 2 пробіли відносно батьківського тегу.
- У редакторах коду та пісочницях (CodePen тощо) є функція автоформатування — використовуйте її перед перевіркою.
- Оформлення відкриваючого і закриваючого тегів має бути послідовним.
Мультирядкове редагування
Два способи одночасного редагування кількох рядків у редакторі:
- Cmd (Mac) / Ctrl (Windows) + клік — клікнути у потрібні рядки, курсор розширюється на кілька рядків одразу.
- Alt/Option + перетягування — «розтягнути» курсор вертикально на послідовні рядки (прямокутне виділення).
Поради початківцям
- Не бійтеся ставити запитання. Дурних запитань не існує. Будь-яке запитання веде до розуміння.
- Ставте конкретні запитання. Замість «нічого не зрозуміло» — «що означає ось ця властивість?».
- Не списуйте. Рішення, зроблене іншою людиною, не відкладається у вашій голові.
- Забудьте про оптимізацію на найближчі два роки. Не економте рядки коду. Якщо потрібно задати лише 2 відступи — пишіть 2 підробні властивості, а не скорочений запис.
- Звикайте до оформлення коду одразу. Вся розробка будується на дотриманні стайл-гайдів.
- Доходьте до рішення самостійно. Наставник лише м'яко спрямовує підказками — і це правильний підхід.
Підсумки
Що розібрали на цій лекції:
- Заголовки
<h1>–<h6>— рівні та правила використання - Абзаци
<p>— розмітка текстових фрагментів - Списки
<ol>,<ul>,<li>— упорядковані та неупорядковані - Зображення
<img>— атрибутиsrc,alt,title - Зображення з підписом
<figure>+<figcaption> - CSS-властивості блочної моделі:
padding,border,margin - line-height — абсолютні та відносні значення
- list-style-type — стилізація маркерів списків
- float — обтікання тексту (і лише обтікання!)
- Селектор за id (
#) та селектор за класом (.) - Тег <span> — інлайнова стилізація тексту без семантичного значення