Ось готовий урок, написаний у стилі CS50, де ми розбираємо способи підключення CSS так, щоб ви не просто запам’ятали синтаксис, а зрозуміли архітектуру вебу.
🎓 CS50: Архітектура стилів. Де живе CSS?
Вітаю! Сьогодні ми поговоримо не просто про код, а про порядок.
Уявіть, що ви будуєте будинок. HTML — це стіни, цегла, перекриття. Це структура. Але ніхто не хоче жити в голих бетонних стінах, правда? Нам потрібен дизайн: шпалери, колір фарби, розташування меблів. Це CSS.
І тут виникає головне питання: Як саме ми передаємо будівельникам (браузеру) інструкції щодо дизайну?
1. 🔥 Вступ: Проблема «Брудного Коду»
Уявіть, що ви менеджер готелю, де є 100 номерів. Ви хочете, щоб у кожному номері штори були синього кольору.
У вас є три варіанти дій: 1. Варіант "Божевілля": Зайти в кожен зі 100 номерів і прикріпити на вікно стікер: «Тут штори сині». 2. Варіант "Локальний": Написати інструкцію для кожного поверху окремо. 3. Варіант "Архітектор": Написати одну головну книгу стандартів готелю, де сказано: «У всіх номерах штори — сині».
Як ви думаєте, що станеться, якщо завтра власник готелю скаже: «Синій вийшов з моди, давайте все перефарбуємо в зелений»? У першому випадку вам доведеться бігати у 100 номерів і переписувати стікери. У третьому — ви зміните один рядок в одному файлі.
Ось чому ця тема критична. Ми вчимося не просто розфарбовувати кнопки, ми вчимося писати код, який легко підтримувати, коли проєкт розростеться до розмірів Facebook чи Google.
2. 🧠 Теоретична база: Три кити стилізації
У світі веб-розробки існує рівно три способи сказати браузеру, як має виглядати елемент. Давайте заглянемо «під капот».
1. Inline (Вбудовані стилі) — «Стікер на стіні»
Ви пишете стиль прямо всередині HTML-тегу.
* Як це виглядає: Атрибут style="...".
* Логіка: Це найсильніша вказівка для конкретного елемента, але це жах для розробника.
* Аналогія: Ви татуюєте собі на лобі напис "Я люблю піцу". Це назавжди з вами, але змінити це важко.
2. Internal (Внутрішні стилі) — «Інструкція для кімнати»
Ви пишете стилі вгорі HTML-файлу, в «голові» сторінки (<head>).
* Як це виглядає: Тег <style>...</style>.
* Логіка: Діє тільки на цю конкретну сторінку.
* Аналогія: Ви одягаєте смокінг на вечірку. Це ваш стиль на цей вечір, але завтра вдома ви будете в іншому.
3. External (Зовнішні стилі) — «Конституція проєкту» 🏆
Ви створюєте окремий файл (наприклад, style.css) і підключаєте його до HTML.
* Як це виглядає: Тег <link rel="stylesheet" href="...">.
* Логіка: Один файл керує виглядом сотень сторінок. Це «Золотий стандарт».
* Аналогія: Шкільна форма. Прописана в статуті школи (окремий документ), і всі учні (сторінки) виглядають відповідно до неї.
❗️ Що треба запам'ятати залізно: Браузер читає код зверху вниз. Але Inline завжди перебиває External. Чому? Бо він "ближче" до тіла елемента.
3. 🧪 Приклади: Від поганого до ідеального
Давайте подивимось, як це працює на практиці.
Етап 1: Inline (Не робіть так, якщо не змушують!)
Ми хочемо червоний заголовок.
<!-- index.html -->
<h1 style="color: red; font-size: 20px;">Привіт, світ!</h1>
Запитання: Що буде, якщо у нас 50 заголовків, і ми захочемо змінити розмір шрифту на 22px? Відповідь: Біль і страждання. Нам доведеться правити 50 рядків.
Етап 2: Internal (Добре для односторінкових сайтів)
Виносимо стилі в <head>.
<!-- index.html -->
<!DOCTYPE html>
<html>
<head>
<style>
h1 {
color: blue;
text-align: center;
}
</style>
</head>
<body>
<h1>Тепер я синій і по центру!</h1>
<h1>І я теж!</h1>
</body>
</html>
Що змінилось? Ми змінили колір в одному місці, а змінилися обидва заголовки. Магія? Ні, це принцип DRY (Don't Repeat Yourself).
Етап 3: External (Професійний підхід)
Розділяємо структуру та вигляд.
Файл 1: style.css (Тут тільки краса)
body {
background-color: #f0f0f0;
}
p {
color: green;
font-family: sans-serif;
}
Файл 2: index.html (Тут тільки структура)
<!DOCTYPE html>
<html>
<head>
<!-- Ось цей магічний місток 👇 -->
<link rel="stylesheet" href="style.css">
</head>
<body>
<p>Я зелений текст на сірому фоні.</p>
</body>
</html>
Запитання: А що, якщо я створю файл about.html і підключу до нього той самий style.css?
Відповідь: Він автоматично отримає той самий дизайн! Ви створили брендинг.
4. 🛠 Практична частина
Час забруднити руки кодом! Відкрийте редактор (VS Code, Notepad++, або пісочницю CodePen) і виконайте ці завдання.
Завдання 1: "Швидка латка"
Створіть кнопку <button>Натисни мене</button>.
Використовуючи Inline стиль, зробіть її фон чорним, а текст білим.
Завдання 2: "Міні-сторінка"
Створіть HTML-файл з трьома параграфами <p>.
Використовуючи Internal стиль (тег <style>), зробіть так, щоб усі параграфи мали розмір шрифту 18px і сірий колір.
Завдання 3: "Проєкт"
1. Створіть файл main.css. Задайте там червоний колір для всіх посилань <a>.
2. Створіть файл index.html. Підключіть до нього main.css.
3. Додайте посилання в HTML і перевірте, чи стало воно червоним.
Завдання 4: "Битва стилів" (Кейс на розуміння)
Що буде, якщо зробити таке?
* У style.css написано: h1 { color: blue; }
* В HTML написано: <h1 style="color: red;">Заголовок</h1>
* Якого кольору буде заголовок? Перевірте це на практиці!
Завдання 5: "А що, якщо..."
Спробуйте підключити зовнішній CSS файл, якого не існує (наприклад, зробіть помилку в назві файлу в атрибуті href). Що покаже браузер? (Спойлер: він не вибухне, але буде виглядати "голим").
5. 💡 Мислення як у розробника
Як відрізнити новачка від профі, просто глянувши на код?
Новачок думає: «Мені треба, щоб цей текст був жирним. Додам style="font-weight: bold" прямо сюди, так швидше».
Досвідчений розробник думає: «Цей текст — це "важливе попередження". Я створю клас .warning у зовнішньому файлі, щоб потім використовувати його скрізь».
Чому External — це найкращий вибір?
1. Кешування: Браузер завантажує файл style.css один раз. Коли користувач переходить на іншу сторінку вашого сайту, браузер не качає стиль знову. Він дістає його з пам'яті. Сайт працює миттєво!
2. Командна робота: Поки ви пишете HTML структуру, ваш колега-дизайнер може писати CSS в іншому файлі. Ви не заважаєте одне одному.
Типові помилки:
* Забути закрити тег <style>.
* Написати шлях до файлу CSS неправильно (наприклад, css/style.css замість style.css).
* Використовувати Inline стилі для всього підряд. Inline дозволено тільки для email-розсилок (там старі технології) або динамічних змін через JavaScript.
6. 🧩 Підсумок
Сьогодні ми зробили важливий крок від хаосу до порядку.
Ми розібрали: * ✅ Inline: Швидко, брудно, точково. * ✅ Internal: Зручно для однієї сторінки. * ✅ External: Професійно, масштабовано, швидко.
Тепер ви вмієте підключати "фарбу" до ваших "стін". Але стривайте... Ми навчилися підключати файл, але як сказати: «Я хочу пофарбувати тільки цей заголовок, а не всі заголовки на світі»? Або «тільки ту кнопку, що в меню»?
Для цього нам потрібні Селектори (Класи та ID). Це наша наступна велика тема.
Це був CS50. Побачимось на наступному уроці! 👋