</> HTML & CSS курс

Тело и одежда твоего сайта Module 1 · Foundations

Если JS — это мозги, то HTML и CSS — это тело и одежда твоего сайта. Без них скрипты — просто строчки в пустоте. Погнали делать интерфейсы, которые выглядят на миллион долларов.

3 урока 1 модуль Beginner
index.html ● live
<!DOCTYPE html>
<html lang="ru">
  <header>
    <h1>WAIproger</h1>
    <nav>
      <a href="/">Home</a>
    </nav>
  </header>
  <main>
    <section>
      <h2>Твой сайт 🚀</h2>
    </section>
  </main>
</html>
<semantic>
SEO ✓
Скролл
01

Скелет интернета — Основы HTML

Три урока, которые покажут как браузер читает разметку, как теги получают суперсилу через атрибуты и как навести порядок в контенте через списки и таблицы.

Semantic HTML Атрибуты Списки & Таблицы SEO Basics Accessibility
01
🏗️
Структура и Смысл
Semantic HTML · Page Anatomy
<header> <main> <section>
Теория

HTML (HyperText Markup Language) — это не язык программирования, это язык разметки. Представь, что ты строишь дом: HTML — это кирпичи и балки.

Любой файл начинается с <!DOCTYPE html> — это сигнал браузеру: «Эй, я современный сайт!». Без него браузер падает в режим совместимости с 1999 годом 😅
<head>
Мозг страницы. Тут лежат ссылки на стили, шрифты и название вкладки. Пользователь не видит.
<body>
Сердце. Всё, что тут написано — отобразится на экране. Твой контент живёт здесь.
Семантика
Вместо <div> везде — <header>, <main>, <footer>. Google это обожает 🚀
💡 WAIproger совет: Семантика — это SEO, доступность и читаемость кода. Один <nav> вместо <div class="nav"> — и Google тебя замечает.
Практика
«Первая разметка WAIproger»
Задача: Создать базовую структуру главной страницы с семантическими тегами.
index.html
<!DOCTYPE html> <html lang="ru"> <head> <meta charset="UTF-8"> <title>WAIproger — Главная</title> </head> <body> <header> <h1>WAIproger</h1> <p>Web. AI. Intelligence.</p> </header> <main> <section> <h2>О нашем проекте</h2> <p>Мы учим коду и нейросетям.</p> </section> </main> </body> </html>
02
🔗
Контент и Атрибуты
Текст · Ссылки · Изображения
href src alt
Теория

Просто текст — это скучно. Нам нужны связи и визуал. Теги могут иметь «настройки» — атрибуты. Они живут внутри открывающего тега.

<a href>
href — куда лететь при клике.
target="_blank" — открыть в новом окне.
<img src alt>
src — путь к картинке.
alt — для поисковиков и accessibility.
⚠️ Важно: Никогда не забывай alt у картинок. Это и SEO, и доступность. Google штрафует сайты без alt-текстов.
Практика
«Навигация и Визуал»
Задача: Добавить логотип и ссылки на соцсети с правильными атрибутами.
nav.html
<nav> <ul> <li><a href="index.html">Главная</a></li> <li><a href="courses.html">Курсы</a></li> <li> <a href="https://t.me/waiproger" target="_blank">Наш Telegram</a> </li> </ul> </nav> <img src="logo.png" alt="Логотип WAIproger" width="200">
03
📋
Списки и Таблицы
Упорядочиваем хаос
<ul> <ol> <table>
Теория

Когда данных много (например, план уроков) — их нужно структурировать. HTML предлагает два вида списков и таблицы для табличных данных.

<ul>
Unordered — маркированный список (точками). Используй когда порядок не важен.
<ol>
Ordered — нумерованный (1, 2, 3). Для шагов, инструкций, рейтингов.
<table>
Для данных, не для лейаута. Строки — <tr>, ячейки — <td>.
🚫 Старое зло: В 2000-х таблицами верстали сайты. Сейчас — антипаттерн. Для лейаута есть Flexbox и Grid. <table> только для реальных данных!
Практика
«Программа обучения»
Задача: Нумерованный список модулей курса JS с правильной семантикой.
program.html
<h3>Программа курса JS:</h3> <ol> <li>Основы и переменные</li> <li>Циклы и функции</li> <li>DOM и События</li> <li>AI и API</li> </ol>
02

Стиль и Характер — Погружение в CSS

HTML построил дом. CSS делает его красивым. Три урока — от первого цвета до fixed-хедера, который держится сверху, пока пользователь скроллит.

Селекторы Box Model Position Cascade Background
04
🎨
Знакомство с CSS — Красим мир
Селекторы · Свойства · Каскад
selector color cascade
Теория

CSS (Cascading Style Sheets) говорит браузеру, как именно должны выглядеть твои кирпичи HTML. Чтобы покрасить заголовок — надо его выбрать (селектор) и дать команду (свойство).

По тегу
h1 { color: green; } — работает для всех <h1> на странице сразу.
По классу
.btn { background: black; } — самый частый способ. Класс можно повесить на любой тег.
Каскад
Если два правила спорят — побеждает то, что ниже или специфичнее. Класс сильнее тега.
Специфичность — кто сильнее?
тег h1
001
класс .btn
010
id #hero
100
!important
☢️ ядерное
💡 WAIproger совет: Не злоупотребляй !important — это костыль. Если используешь его часто, значит архитектура CSS сломана. Классы решают большинство задач.
Практика
«Фирменный стиль»
Задача: Сделать заголовок зелёным, а фон страницы — тёмно-серым. Первый шаг к фирменному стилю WAIproger.
style.css
body { background-color: #1a1a1a; color: white; font-family: Arial, sans-serif; } h1 { color: #00FF00; /* Наш изумрудный WAIproger */ text-transform: uppercase; }
05
📦
Box Model — Главный секрет верстки
Content · Padding · Border · Margin
padding border margin
Теория

Всё в вебе — это прямоугольники. Даже если картинка круглая — она лежит в квадратной коробке. Box Model — это как устроена эта коробка.

margin
border
padding
content текст / фото
Content
Сам текст или фото. Размер задаётся через width и height.
Padding
Внутренний отступ. Дистанция от текста до границы. Тянет фон элемента.
Border
Рамка. 2px solid red — толщина, стиль, цвет.
Margin
Внешний отступ. Дистанция до соседних коробок. Прозрачный.
Важный момент: По умолчанию width не включает padding и border. Поэтому всегда добавляй box-sizing: border-box — тогда размер считается честно.
Практика
«Кнопка купить»
Задача: Сделать красивую кнопку с отступами, рамкой и скруглёнными углами.
button.css
.buy-button { padding: 15px 30px; background-color: #00FF00; color: black; border: 2px solid white; border-radius: 5px; /* Скругление углов */ cursor: pointer; margin-top: 20px; }
06
📌
Позиционирование и Фон
Position · Fixed Header · Background
position fixed absolute
Теория

Как закрепить меню сверху или наложить текст на картинку? Свойство position вырывает элемент из обычного потока и даёт тебе полный контроль над координатами.

static
По умолчанию. Элемент стоит там, где должен. top/left не работают.
relative
Двигаем относительно его обычного места. Место в потоке сохраняется.
absolute
Вырываем из потока и крепим к ближайшему relative-родителю.
fixed
Приклеиваем к экрану. Не скроллится. Идеально для хедера и кнопки «Вверх».
💡 Лайфхак: Для absolute нужен relative-родитель. Без него элемент прилипает к <body>. Почти всегда пишут: .parent { position: relative; }
Практика
«Прозрачная шапка»
Задача: Сделать заголовок, который всегда висит сверху страницы, не уходит при скролле.
header.css
header { position: fixed; top: 0; width: 100%; background: rgba(0, 0, 0, 0.8); /* Полупрозрачный чёрный */ padding: 10px; z-index: 1000; /* Поверх всего остального */ } /* Чтобы контент не прятался под хедером */ body { padding-top: 60px; }
03

Современная верстка — Flexbox и Grid

Забудь про float и таблицы. Flexbox и Grid — это два супероружия современного верстальщика. Плюс адаптивность под любой экран и финальный аккорд — формы.

Flexbox CSS Grid Media Queries Forms UX/UI
07
↔️
Flexbox — Гибкость и Порядок
justify-content · align-items · flex-wrap
display:flex justify align
Теория

До Flexbox верстка была адом — float, clearfix, хаки. Теперь расставить элементы в ряд — дело одной строки: display: flex. Пишешь родителю — и все дети встают в ряд автоматически.

Flexbox работает по одной оси: либо горизонтальной (row), либо вертикальной (column). Для двумерных сеток — используй Grid (следующий урок).
justify-content
align-items
1
2
3
4
.container { display: flex; justify-content: flex-start; align-items: flex-start; }
justify-content
Двигает по главной оси (горизонталь). center, space-between, space-around.
align-items
Двигает по поперечной оси (вертикаль). center, flex-end, stretch.
flex-wrap
wrap — элементы переносятся на новую строку если не влезают. Спасает на мобилках.
Практика
«Карточки курсов»
Задача: Три курса в один ряд с равными отступами. На мобилках падают друг под друга.
courses.css
.courses-container { display: flex; justify-content: space-around; flex-wrap: wrap; /* На мобилках падают вниз */ } .course-card { width: 300px; background: #333; padding: 20px; }
08
CSS Grid — Повелитель сеток
grid-template-columns · fr · gap
display:grid fr gap
Теория

Если Flexbox хорош для рядов, то Grid — для целых макетов. Ты буквально рисуешь сетку: «Тут будет 3 колонки, первая в два раза шире остальных».

grid-template-columns
A
B
C
D
E
F
.grid { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; }
fr — дробная единица
1fr 2fr — первая колонка занимает 1/3 пространства, вторая 2/3. Гибко!
gap
Расстояние между ячейками. Работает и по горизонтали, и по вертикали сразу.
repeat()
repeat(3, 1fr) — три равные колонки. Короче чем писать 1fr 1fr 1fr.
💡 Когда что: Flexbox — один ряд/столбец (навигация, карточки). Grid — двумерные макеты (весь лейаут страницы, галереи, дашборды).
Практика
«Сетка галереи»
Задача: Сетка 2×2 для преимуществ компании с равными ячейками и отступами.
gallery.css
.benefits { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; /* Расстояние между ячейками */ }
09
📱
Адаптивность — Mobile First
Media Queries · Breakpoints · Responsive
@media max-width mobile
Теория

Твой сайт должен идеально выглядеть и на 27-дюймовом мониторе, и на старом iPhone. Media Queries говорят браузеру: «если ширина меньше X — применяй эти стили».

Стандартные брейкпоинты
📱 Mobile ≤ 600px
📱 Tablet 601–900px
💻 Laptop 901–1200px
🖥️ Desktop 1201px+
Mobile First — сначала пишешь стили для телефона, потом через min-width добавляешь для больших экранов. Это лучший подход в 2026 — 60%+ трафика идёт с мобил.
Практика
«Мобильная версия»
Задача: Скрыть большое меню на телефонах и перестроить карточки в одну колонку.
responsive.css
/* Стили по умолчанию — для десктопа */ .courses-container { display: flex; gap: 20px; } /* Телефон — всё в одну колонку */ @media (max-width: 600px) { .courses-container { flex-direction: column; } h1 { font-size: 24px; } }
10
✍️
Формы и Фишки — UX/UI
form · input · label · :hover · :focus
<form> :hover :focus
Теория

Форма — это мост между пользователем и сервером. Без форм нет регистраций, платежей, обратной связи. HTML + CSS дают тебе полный контроль над их внешним видом.

<input>
Поле ввода. Тип задаёт поведение: text, email, password, checkbox.
<label>
Подпись к полю. При клике на label — фокус уходит в поле. Важно для accessibility.
:hover / :focus
Псевдоклассы. :hover — мышка навелась. :focus — поле активно (клик / Tab).
Live-превью формы
Практика
«Форма регистрации на курс»
Задача: Форма с именем, email и кнопкой. Кнопка меняет цвет при наведении.
form.html + form.css
<!-- HTML --> <form class="contact-form"> <label for="name">Ваше имя:</label> <input type="text" id="name" placeholder="Арман"> <label for="email">Email:</label> <input type="email" id="email" required> <button type="submit" class="buy-button"> Записаться </button> </form> /* CSS */ .contact-form input { display: block; width: 100%; margin-bottom: 15px; padding: 10px; border-radius: 4px; border: 1px solid #00FF00; } .buy-button:hover { background-color: white; color: #00FF00; transition: 0.3s; /* Плавный переход */ }
🎓

Поздравляю! Ты прошёл путь
W-разработчика

Теперь у тебя есть всё:

</>
HTML Структура твоего проекта
#
CSS Стиль и адаптивность
JS
JavaScript Интерактив и логика

WAIproger официально укомплектован знаниями 🚀

Весь курс пройден?

Общий прогресс курса 0%
Модуль 1 — Основы HTML
Модуль 2 — Погружение в CSS
Модуль 3 — Современная верстка
"

Ты прошёл весь путь от <!DOCTYPE> до display: grid.
Теперь ты официально верстальщик WAIproger! 🏆

HTML & CSS курс — 100% Завершён