Модуль 1

Що таке CSS і як він працює з HTML

Ось урок, створений спеціально для тебе в стилі CS50. Уяви, що ми зараз в аудиторії Sanders Theatre, світло приглушене, і ми починаємо занурення.


🎓 CS50: Стилізуємо світ. Що таке CSS і навіщо він HTML?

Привіт, світе! Радий вас бачити.

На минулому занятті ми збудували фундамент. Ми створили HTML-сторінку. Але давайте будемо чесними: виглядає вона... ну, так собі. Як документ Microsoft Word з 1995 року. Чорний текст, білий фон, нудний шрифт Times New Roman. Все працює, структура є, але чи захоче хтось проводити час на такому сайті? Навряд чи.

1. 🔥 Вступ: Проблема «Голого скелета»

Уявіть, що ви будуєте будинок. HTML — це бетонні стіни, перекриття, дверні отвори. Це структура. Ви можете жити в такому будинку? Технічно — так. Стіни є, дах не тече. Але чи затишно там? Ні. Це просто «бетонна коробка».

Щоб перетворити цю коробку на дім, вам потрібні фарба, шпалери, меблі, килими, освітлення. Вам потрібен стиль.

У вебі цю роль виконує CSS (Cascading Style Sheets).

Поставте собі питання: * Чому всі кнопки на сайті Apple виглядають саме так? * Чому, коли ви наводите мишку на посилання, воно змінює колір?

Це не магія HTML. HTML навіть не знає, що таке «червоний колір» або «круглі кути». Його робота — сказати: «Це — заголовок». А робота CSS — сказати: «Цей заголовок має бути великим, жирним і синім».

Без CSS інтернет був би просто нескінченним списком нудних документів. CSS — це те, що перетворює дані на досвід.


2. 🧠 Теоретична база: Як це працює «під капотом»?

Давайте заглянемо під капот. Як браузер розуміє, що саме треба розфарбувати?

У CSS є дуже проста логіка, схожа на те, як ви даєте вказівки маляру. Ви кажете:

"Гей, ти! (Вказуєте на стіну) Пофарбуй її в жовтий!"

У коді це виглядає так: Селектор { Властивість: Значення; }

Розберемо по кісточках:

  1. Селектор (Selector): Кому ми це кажемо? (Наприклад: h1, p, img).
  2. Властивість (Property): Що саме ми хочемо змінити? (Колір, розмір, фон).
  3. Значення (Value): Яким воно має стати? (Червоним, 20 пікселів, прозорим).

📌 Що треба запам’ятати залізно:

Синтаксис! Фігурні дужки { } обмежують правила. Двокрапка : розділяє властивість і значення. Крапка з комою ; завершує команду.

h1 {
    color: blue;
    font-size: 50px;
}

🤔 Інтуїтивне розуміння: Каскад

Чому це називається Cascading Style Sheets (Каскадні таблиці)? Уявіть водоспад. Вода тече зверху вниз. Так само і браузер читає стилі зверху вниз. Якщо ви спочатку скажете «зроби текст червоним», а в наступному рядку «зроби текст зеленим» — виграє останній. Зелений. Це просте правило, але воно керує всім.


3. 🧪 Приклади: Від простого до реального

Приклад 1: Мінімум

У нас є заголовок.

<h1>Привіт, CS50!</h1>

Як це виглядає зараз? Просто чорний текст. Нудно. Давайте додамо трохи магії CSS.

h1 {
    color: red;
}

Що ви очікуєте побачити? Текст стане червоним. Все просто.

Приклад 2: Типова кнопка

А тепер реальна задача. У нас є посилання, яке має виглядати як крута кнопка «Купити».

HTML:

<a href="#" class="btn">Купити зараз</a>

CSS:

.btn {
    background-color: #007bff; /* Синій фон */
    color: white;              /* Білий текст */
    padding: 10px 20px;        /* Відступи всередині, щоб кнопка "дихала" */
    text-decoration: none;     /* Прибрати підкреслення посилання */
    border-radius: 5px;        /* Закруглені кути - це сучасно */
    font-family: sans-serif;   /* Нормальний шрифт без засічок */
}

Питання до вас: Чому ми використали крапку .btn, а не просто написали a? Відповідь: Якби ми написали a { ... }, то всі посилання на сайті стали б кнопками. А ми хочемо стилізувати тільки конкретний клас елементів. Клас — це як бейдж з ім'ям, який ми вішаємо на елементи, щоб стилізувати їх групою.

Приклад 3: Інтерактивність (Псевдокласи)

Ми хочемо, щоб кнопка реагувала, коли ми наводимо на неї мишку.

.btn:hover {
    background-color: #0056b3; /* Трохи темніший синій */
}

Що тут відбувається? :hover — це спеціальний стан. Браузер слідкує: «Ага, курсор над елементом? Застосуй цей стиль!». Це створює відчуття, що інтерфейс живий.


4. 🛠 Практична частина

Час забруднити руки кодом! Відкрийте редактор (VS Code або CodePen) і зробіть наступне:

Завдання 1: «Світлофор» Створіть три div елементи. За допомогою CSS зробіть їх круглими (border-radius: 50%) і дайте їм кольори: червоний, жовтий, зелений.

Завдання 2: «Зламаний стиль» Ось код, який не працює. Знайдіть помилку і виправте її.

h1 {
    color: blue
    font-size 20px;
}

Завдання 3: «Дизайнер новин» Візьміть звичайний параграф тексту (<p>). * Зробіть фон світло-сірим (#f0f0f0). * Додайте зліва кольорову лінію (border-left: 5px solid red). * Додайте відступи (padding), щоб текст не прилипав до країв. * Результат має виглядати як цитата в модному блозі.

Завдання 4: Міні-кейс «Темна тема» Створіть сторінку з чорним фоном і білим текстом. Але зробіть так, щоб один конкретний абзац залишився чорним на білому прямокутнику. (Підказка: використовуйте класи).

Завдання 5: Питання «А що, якщо...» Що станеться, якщо у вас буде такий код?

p { color: red; }
p { color: blue; }

Перевірте це на практиці. Який колір переможе і чому?


5. 💡 Мислення як у розробника

Ви починаєте писати CSS і раптом... нічого не працює. Екран білий, стилів немає. Не панікуйте. Це стається з сеньйорами щодня.

Типові помилки новачків:

  1. Забули підключити файл. Ви написали CSS у файлі style.css, але забули додати <link rel="stylesheet" href="style.css"> у ваш HTML. Це як купити фарбу, але залишити її в магазині.
  2. Пропущена крапка з комою. Одна пропущена ; може "вбити" весь код після неї.
  3. Друкарські помилки. color: reed; (зайва 'e') — комп'ютер не здогадається, що ви мали на увазі червоний. Він просто проігнорує це.

Як думає профі:

Досвідчений розробник не намагається вгадати стилі в голові. Він використовує Developer Tools (Інструменти розробника). * Натисніть F12 (або праву кнопку миші -> "Inspect" / "Перевірити"). * Це ваш рентген. Ви можете змінювати стилі прямо в браузері в реальному часі, не переписуючи файл, щоб знайти ідеальний вигляд. Спробуйте це прямо зараз на будь-якому сайті!

Порада Девіда:

Не пишіть стилі для кожного окремого елемента (#button1, #button2). Мисліть шаблонами. Створіть один клас .card і використовуйте його для всіх карток товару. DRY (Don't Repeat Yourself) — не повторюй себе.


6. 🧩 Підсумок

Отже, що ми маємо? * HTML — це іменник (стіл, заголовок, картинка). * CSS — це прикметник (дерев'яний, великий, яскрава).

Тепер ви вмієте не просто створювати сторінки, а робити їх приємними для ока. Ви знаєте, як пофарбувати елемент, як змінити шрифт і як змусити кнопку реагувати на ваші дії.

Але зачекайте... Ми навчилися розфарбовувати речі. Але як розмістити цю кнопку справа від картинки? Як зробити так, щоб три колонки стояли рівно в ряд, а не одна під одною?

Тут в гру вступає геометрія вебу — Блокова модель (Box Model) та Flexbox. І саме про це ми поговоримо на наступному уроці.

А поки що... це був CS50.