burger-menu
меню

Переход к HTML5: Простым языком о мощных возможностях

HTML5 пришёл, чтобы сделать код семантическим – то есть понятным как для разработчиков, так и для браузеров и поисковиков. Давайте разберём, какие новые теги появились и почему они делают нашу жизнь лучше.

Нововведения HTML5: что изменилось и что добавлено

Семантические теги: кто есть кто?

Раньше браузеру было всё равно, что обозначает конкретный div. Он видел просто коробку с контентом. Теперь у нас есть специальные теги, которые сразу дают понять, какая часть страницы за что отвечает.

Вот полезные семантические теги:

Не путай <section> и <div>. <section> — это логически связанный контент, а <div> — просто контейнер без смысла.

<header> – шапка страницы или раздела

Это верхняя часть сайта или отдельного блока. Обычно сюда попадает логотип, меню, контактная информация.

Например:

<header>
    <h1>Мой крутой блог</h1>
    <nav>
        <ul>
            <li><a href="#">Главная</a></li>
            <li><a href="#">О нас</a></li>
            <li><a href="#">Контакты</a></li>
        </ul>
    </nav>
</header>

Важно: <header> можно использовать не только для всей страницы, но и внутри <article>, <section>, если у них есть заголовок.

<footer> – подвал страницы или раздела

Это место для копирайтов, контактных данных, ссылок на соцсети и другой информации, которая логично располагается внизу.

<footer>
    <p>&copy; 2025 Все права защищены.</p>
    <a href="https://t.me/mychannel">Наш Telegram</a>
</footer>

<article> – независимый контент

Используется для статей, постов в блоге, новостей. Важное правило: этот блок должен быть самодостаточным, то есть его можно вынести отдельно, и смысл не потеряется.

<article>
    <h2>Как я выучил HTML5 за 3 дня</h2>
    <p>Оказалось, это проще, чем я думал!</p>
</article>

Если сомневаетесь, нужен ли вам <article> – подумайте, можно ли этот кусок кода запостить отдельно в соцсети или RSS? Если да – используйте <article>.

<section> – раздел

Это группировка контента по смыслу. Например, если у вас есть страница с курсами, каждый курс можно оформить в <section>.

<section>
    <h2>Курс по HTML</h2>
    <p>Изучаем верстку с нуля.</p>
</section>

<section>
    <h2>Курс по CSS</h2>
    <p>Учимся делать красивые сайты.</p>
</section>

Когда выбирать <article>, а когда <section>?

Тег <aside> – побочный контент

Используется для боковых колонок, ссылок на похожие статьи, рекламных блоков.

<aside>
    <h3>Популярные статьи</h3>
    <ul>
        <li><a href="#">Как сделать адаптивный сайт?</a></li>
        <li><a href="#">Флексы или Гриды?</a></li>
    </ul>
</aside>

Если контент важен, но не обязателен – смело отправляйте его в <aside>.

Тег <nav> – для навигации

Этот тег нужен, если в блоке есть глобальные или локальные навигационные ссылки.

<nav>
    <ul>
        <li><a href="#">Главная</a></li>
        <li><a href="#">Услуги</a></li>
        <li><a href="#">Контакты</a></li>
    </ul>
</nav>

Не путайте с обычными ссылками! Если внутри просто "Читать дальше" или "Подробнее", <nav> не нужен.

Почему семантика – это важно?

Мультимедиа в HTML: Работа с видео и аудио

Мультимедиа на сайте — это не просто красивые видосики и музыка для атмосферы, а мощный инструмент, который может улучшить UX (опыт пользователя), сделать контент живее и просто добавить вау-эффект. Сегодня разберёмся, как легко встроить видео и аудио в HTML, какие фишки можно использовать и как встроить ролик с YouTube.

Тег <video> — показываем видео без лишних проблем

Видео на сайте добавляется элементарно. Используем тег <video> и указываем путь к файлу:

<video src="video.mp4" controls></video>
Важные атрибуты для видео
Атрибут Описание
controls Добавляет стандартные элементы управления (плей, пауза, громкость)
autoplay Запускает видео автоматически (но многие браузеры требуют, чтобы видео было без звука)
loop Зацикливает видео
muted Отключает звук (полезно в связке с autoplay)
poster Показывает картинку-заставку перед воспроизведением

Пример с кастомной обложкой и зацикливанием:

<video src="video.mp4" controls poster="preview.jpg" loop></video>

Альтернативные форматы

Браузеры не всегда поддерживают один и тот же формат видео. Решение — добавить несколько вариантов:

<video controls>
  <source src="video.mp4" type="video/mp4">
  <source src="video.webm" type="video/webm">
  Ваш браузер не поддерживает видео.
</video>

Тег <audio> — добавляем музыку или звуковые эффекты

Аудио работает почти так же просто, как видео:

<audio src="sound.mp3" controls></audio>
Полезные атрибуты:
Атрибут Описание
controls Кнопки управления
autoplay Автоматическое воспроизведение
loop Зацикливание
muted Отключенный звук по умолчанию

Форматы аудио тоже бывают разные, так что лучше добавить несколько:

<audio controls>
  <source src="sound.mp3" type="audio/mpeg">
  <source src="sound.ogg" type="audio/ogg">
  Ваш браузер не поддерживает аудио.
</audio>

Встраивание видео с YouTube

Не всегда есть смысл загружать видео на сайт, если оно уже есть на YouTube. Для этого используем <iframe>:

<iframe width="560" height="315" src="https://www.youtube.com/embed/VIDEO_ID" frameborder="0" allowfullscreen></iframe>

Как получить VIDEO_ID?
Это часть ссылки после v=, например, для

https://www.youtube.com/watch?v=dQw4w9WgXcQ

ID = dQw4w9WgXcQ

Можно сразу включить видео без кликов, для этого в ссылку в <iframe> добавляется параметр autoplay=1

Например:

<iframe width="560" height="315" src="https://www.youtube.com/embed/VIDEO_ID?autoplay=1" frameborder="0" allowfullscreen></iframe>

Но важно:

<iframe width="560" height="315" src="https://www.youtube.com/embed/VIDEO_ID?autoplay=1&mute=1" frameborder="0" allowfullscreen></iframe>

В этом случае видео начнёт воспроизводиться автоматически, но без звука. Пользователь сможет включить звук вручную.

Графика и анимации с HTML5: простыми словами о крутых возможностях

Поговорим о том, как добавлять графику и анимации на веб-страницы. Разберёмся с основами <canvas>, простыми фигурами, анимациями и даже немного заглянем в мир WebGL.

Введение в <canvas> – холст для веба

Что это такое?

Тег <canvas> в HTML5 — это буквально холст, на котором можно рисовать с помощью кода. Представь, что у тебя есть пустой лист бумаги, но вместо карандаша ты используешь JavaScript (но пока без него — разберёмся с основами!).

Как добавить <canvas> в код?

Простейший пример:

<canvas id="myCanvas" width="400" height="300"></canvas>

Это создаёт холст размером 400x300 пикселей. Но просто так он ничего не рисует — нужно подключить немного магии с помощью canvas.getContext("2d") с помощью JavaScript. Пока запомни: без контекста холст остаётся пустым!

Простое рисование фигур

Давай нарисуем что-нибудь на нашем холсте!

<canvas id="myCanvas" width="400" height="300"></canvas>

<script>
  // Находим наш canvas
  let canvas = document.getElementById("myCanvas");
  let ctx = canvas.getContext("2d"); // Получаем 2D-контекст

  // Рисуем прямоугольник
  ctx.fillStyle = "blue"; // Цвет заливки
  ctx.fillRect(50, 50, 100, 100); // (x, y, width, height)
</script>

Что тут происходит?

А круг нарисуем?

ctx.beginPath();
ctx.arc(200, 150, 50, 0, Math.PI * 2); // (x, y, radius, startAngle, endAngle)
ctx.fillStyle = "red";
ctx.fill();

Тут уже чуть сложнее, но в целом просто. Разберем поочередно:

fill() — заливает её цветом.

beginPath() — говорит браузеру: "Эй, я хочу нарисовать что-то новое, не соединяй это с тем, что уже было!". Если не вызывать beginPath(), то круги, линии и фигуры могут случайно соединяться между собой, потому что <canvas> запоминает все нарисованные формы как один общий рисунок.

arc() — ctx.arc(x, y, radius, startAngle, endAngle) — это команда для рисования окружности или её части.

Разбираем параметры:

А почему углы в радианах, а не в градусах?
Потому что в математике круг измеряется в радианах, а не в градусах.

Math.PI в помощь!

Градусы в радианы
Угол в градусах В радианах
0
90° Math.PI / 2
180° Math.PI
270° 1.5 * Math.PI
360° 2 * Math.PI

Значит, если хотим нарисовать полный круг, мы пишем:

ctx.arc(200, 150, 50, 0, Math.PI * 2);

А если только половину круга (полукруг)?

ctx.arc(200, 150, 50, 0, Math.PI);

Введение в анимации (и немного про WebGL)

Простая 2D-анимация

Хотим оживить наш холст? Вот самый простой способ — сделать двигающийся шарик!

<canvas id="myCanvas" width="400" height="300"></canvas>
<script>
  let canvas = document.getElementById("myCanvas");
  let ctx = canvas.getContext("2d");
  let x = 50;
  let speed = 2;

  function draw() {
    ctx.clearRect(0, 0, canvas.width, canvas.height); // Очищаем холст
    ctx.beginPath();
    ctx.arc(x, 150, 20, 0, Math.PI * 2);
    ctx.fillStyle = "green";
    ctx.fill();

    x += speed; // Двигаем шарик

    requestAnimationFrame(draw); // Запускаем следующий кадр
  }

  draw(); // Стартуем анимацию
</script>

Как это работает?

  1. Очищаем холст (clearRect), чтобы старый рисунок не оставался.
  2. Рисуем шарик.
  3. Меняем его координаты.
  4. Вызываем requestAnimationFrame(draw), чтобы обновить картинку плавно.

А WebGL что такое?
Если <canvas> — это карандаш, то WebGL — это Photoshop. Он позволяет рисовать сложную 3D-графику прямо в браузере. Но для начала его лучше изучать с библиотеками, например, Three.js.

Лайфхак: готовые библиотеки для анимаций

Не хочешь писать весь код руками? Есть библиотеки — готовые решения, которые упрощают жизнь!

Анимации с GreenSock (GSAP)

GSAP — это мега-мощный инструмент для анимаций. Пример плавного перемещения объекта:

<div id="box" style="width:50px;height:50px;background:red;position:absolute;"></div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/gsap/3.12.2/gsap.min.js"></script>
<script>
  gsap.to("#box", { x: 300, duration: 2, ease: "power2.out" });
</script>

Плюсы GSAP:

PIXI.js — для мощной 2D-графики

Если нужен движок для крутых игр или эффектов — PIXI.js поможет! Он использует WebGL, но сам код остаётся простым.

<script src="https://cdnjs.cloudflare.com/ajax/libs/pixi.js/7.0.0/pixi.min.js"></script>
<script>
  let app = new PIXI.Application({ width: 400, height: 300, backgroundColor: 0x1099bb });
  document.body.appendChild(app.view);

  let circle = new PIXI.Graphics();
  circle.beginFill(0xff0000);
  circle.drawCircle(100, 150, 50);
  circle.endFill();
  app.stage.addChild(circle);
</script>

Что выбрать?

Формы в HTML5: новые возможности

Формы – это то, без чего невозможен ни один сайт с интерактивностью. Регистрация, обратная связь, оформление заказа – всё это формы. HTML5 добавил много крутых фишек, которые облегчают жизнь разработчикам и пользователям. Разберём три мощных улучшения: новые типы полей, автозаполнение и удобные подсказки, а также лайфхак с required.

Новые типы полей: меньше кода – больше удобства

HTML5 избавляет нас от тонны JS-валидации и сторонних плагинов, введя новые типы полей. Теперь браузер сам знает, что вводить и как это отображать.

Цвет (<input type="color">)

Хотите, чтобы пользователь выбрал цвет без сторонних библиотек? Легко:

<label for="color">Выберите цвет:</label>
<input type="color" id="color" name="favcolor">

Результат:

Браузер покажет удобную палитру, где можно выбрать любой оттенок.

Дата (<input type="date">)

Когда-то мы писали сложные date-picker'ы на jQuery, теперь это встроено:

<label for="birthday">Дата рождения:</label>
<input type="date" id="birthday" name="bday">

Результат:

Мобильные пользователи получат удобный календарь, а на десктопе – стандартный date-picker.

Ползунок (<input type="range">)

Ползунки для регулировки громкости, яркости и других параметров:

<label for="volume">Громкость:</label>
<input type="range" id="volume" name="volume" min="0" max="100" value="50">

Результат:

Можно задать минимальное (min) и максимальное (max) значения, а также начальное (value).

Автозаполнение и подсказки: меньше работы для пользователей

Когда мы вводим данные, браузер может помочь:

Автозаполнение (autocomplete)

Позволяет браузеру подставлять сохранённые данные, например, имя, email или адрес:

<label for="email">Email:</label>
<input type="email" id="email" name="email" autocomplete="email">

Вводите autocomplete="off", если хотите отключить автозаполнение.

Placeholder: ненавязчивый помощник

placeholder – это текст внутри поля, исчезающий при вводе:

<input type="text" placeholder="Введите ваше имя">

Не стоит использовать placeholder вместо label, потому что он исчезает при вводе, и юзер может забыть, что заполняет.

arrow-up