Глава 3. HTML и CSS основы для будущего React-разработчика

Зачем эта глава

React работает с HTML-структурой и CSS-оформлением. Даже если ты хочешь быть «только React-разработчиком», тебе нужны основы.

В этой главе мы без сложных терминов разберём, как строится страница и как задаются стили.

Теория (коротко)

HTML — это структура. Он отвечает за заголовки, абзацы, кнопки, списки и формы.

CSS — это внешний вид. Он отвечает за цвета, отступы, размер текста, сетки.

В React ты пишешь HTML-подобный код, который называется JSX.

Минимальный HTML-скелет

HTML
<div>
  <h1>Заголовок</h1>
  <p>Текст абзаца</p>
  <button>Кнопка</button>
</div>

Простой CSS пример

CSS
.card {
  padding: 16px;
  border: 1px solid #ddd;
  border-radius: 12px;
}

.card h1 {
  margin-bottom: 8px;
}
Важно: отступы и размеры — это то, что делает интерфейс «аккуратным».
Подсказка: не пытайся сразу выучить все свойства CSS. Начни с padding, margin, display и color.

Стилизация в React

В React можно использовать обычный CSS, CSS Modules и styled-components.

CSS Modules — удобны, когда хочешь изолировать стили в одном компоненте.

CSS Modules
/* Card.module.css */
.card {
  padding: 16px;
  border-radius: 12px;
}
JSX
import styles from "./Card.module.css";

function Card() {
  return <div className={styles.card}>Карточка</div>;
}

styled-components — подходит, если хочешь писать стили прямо в JS.

JSX
import styled from "styled-components";

const Button = styled.button`
  background: #1a5fb4;
  color: white;
`;

Задания

Задание: разминка

  • Создай блок с заголовком и абзацем.
  • Добавь кнопку и задай ей фон.
  • Сделай отступы вокруг блока.

Проверка себя

Ты понимаешь, что HTML — структура, CSS — внешний вид, и можешь сделать простой блок с отступами.

Мини-проект

Цель: карточка профиля.

Требования: заголовок, описание, кнопка, отступы и граница.

Критерий готовности: карточка выглядит читаемо и аккуратно.

Словарь главы

HTML
Язык разметки, описывает структуру страницы.
CSS
Язык стилей, задаёт внешний вид элементов.
JSX
Синтаксис, похожий на HTML, но внутри JavaScript.