December 9, 2024

HTML: средний уровень

Если вы уже уверенно владеете основами HTML и хотите перейти на следующий уровень, тестовые задания среднего уровня на платформе HeadHunter (hh.ru) помогут углубить ваши знания и проверить умение применять их в более сложных ситуациях. Здесь уже недостаточно просто знать базовые теги — потребуется понимание семантической структуры страниц, правильное использование вложенности элементов, атрибутов и работа с формами и таблицами. В этой статье мы разберем примеры таких задач, дадим развернутые ответы и объясним, как избежать типичных ошибок.

👉🏻Навигация и ссылки по всем материалам в Telegram

Вопрос 1

Вам нужно настроить корректное отображение страницы на мобильных устройствах, установив ширину области просмотра равной ширине устройства. Какую строку кода нужно добавить, чтобы это сделать?

Варианты ответа:

  1. <meta name="viewport" content="width=device-width, maximum-scale=2.0">
  2. <meta name="viewport" content="width=800">
  3. <meta name="viewport" content="initial-scale=1.0, width=device-width">
  4. <meta name="viewport" content="width=device-width, user-scalable=no">
  5. <meta name="viewport" content="width=device-width">

Обоснование:
Тег <meta name="viewport"> используется для управления отображением веб-страницы на мобильных устройствах. Указание width=device-width задаёт ширину области просмотра равной ширине устройства, что и требуется по условию задачи.

  • Вариант 1: Включает параметр maximum-scale=2.0, что ограничивает возможность масштабирования страницы, но это не является строго обязательным по задаче.
  • Вариант 2: Устанавливает фиксированную ширину области просмотра (800px), что не подходит для адаптивного отображения.
  • Вариант 3: Корректно задаёт ширину устройства через width=device-width и начальный масштаб (initial-scale=1.0), что является стандартным подходом.
  • Вариант 4: Устанавливает user-scalable=no, что отключает возможность масштабирования пользователем. Это может ухудшить пользовательский опыт.
  • Вариант 5: Минимальный корректный вариант для выполнения требования.

Правильный ответ:
3. <meta name="viewport" content="initial-scale=1.0, width=device-width">

Вопрос 2

Какие ошибки допущены в коде?

Варианты ответа:

  1. Отсутствует закрывающий тег для <h1>, тег <img> имеет закрывающую часть, у тега <b> отсутствует закрывающая часть.
  2. Отсутствует закрывающий тег для <meta>, тег <img> имеет закрывающую часть, отсутствует закрывающий тег для <div>.
  3. Отсутствует закрывающий тег для <footer>, у тега <b> отсутствует закрывающая часть, отсутствует закрывающий тег для <div>.
  4. Отсутствует закрывающий тег для <p>, отсутствует закрывающий тег для <div>, отсутствует закрывающий тег для <meta>.
  5. Отсутствует закрывающий тег для <div>, тег <img> имеет закрывающую часть, у тега <b> отсутствует закрывающая часть.

Обоснование:

Анализируем ошибки:

  1. Тег <b>: Внутри параграфа <p> открывается тег <b>, но отсутствует его закрывающий тег (</b>).
  2. Тег <img>: Тег <img> должен быть одиночным (самозакрывающимся) и не требует закрывающего тега </img>.
  3. Тег <div>: В коде отсутствует закрывающий тег для <div>, что нарушает структуру HTML.
  4. Тег <meta>: Не требует закрывающего тега, так как является одиночным.
  5. Теги <h1> и <footer>: Оба имеют правильные открывающие и закрывающие теги.

Вывод:
Правильный ответ:
3. Отсутствует закрывающий тег для <footer>, у тега <b> отсутствует закрывающая часть, отсутствует закрывающий тег для <div>.

Вопрос 3

В макете есть фраза “Итальянская кухня”. С помощью какого тега вы разметите данный элемент?

Варианты ответа:

  1. С помощью тега <h1>
  2. С помощью тега <a>
  3. С помощью тега <p>
  4. С помощью тега <span>
  5. С помощью тега <li>

Обоснование:

  • Тег <h1>: Используется для основного заголовка страницы. В данном случае фраза "Итальянская кухня" не является заголовком всей страницы, поэтому этот тег не подходит.
  • Тег <a>: Применяется для ссылок. "Итальянская кухня" не является ссылкой, поэтому этот тег не подходит.
  • Тег <p>: Используется для разметки параграфов текста. Однако, текст "Итальянская кухня" носит декоративный характер и обычно не оформляется в виде параграфа.
  • Тег <span>: Это универсальный элемент для выделения части текста или контейнера, который идеально подходит для стилизации таких коротких фраз, как "Итальянская кухня".
  • Тег <li>: Применяется только в списках, и здесь список не используется.

Правильный ответ:
4. С помощью тега <span>

Вопрос 4

Какой элемент на данном макете будет являться заголовком первого уровня?

Варианты ответа:

  1. На данной странице не должно быть заголовка первого уровня.
  2. Явного заголовка первого уровня на странице нет, его нужно добавить скрытым.
  3. Элемент с текстом “Главная”.
  4. Только элемент с текстом “Дубай, ОАЭ”.
  5. Все заголовки карточек должны быть заголовком первого уровня <h1>.

Обоснование:

Заголовок первого уровня <h1> должен быть уникальным на странице и отражать её главную суть. В данном макете:

  1. "Главная": Не является подходящим заголовком, так как это служебный элемент навигации.
  2. Карточки мест (например, "Дубай, ОАЭ"): Они относятся к контенту страницы, но заголовком первого уровня они быть не могут, так как их несколько, и они описывают отдельные элементы.
  3. Добавление скрытого заголовка: Если явного заголовка первого уровня нет, логично добавить его скрытым (например, "Популярные туры"), чтобы корректно структурировать страницу.

Вывод:
Правильный ответ:
2. Явного заголовка первого уровня на странице нет, его нужно добавить скрытым.

Вопрос 5

Вы хотите добавить к форме скрытое поле, чтобы передавать на сервер данные, которые пользователь не вводил вручную. Что нужно сделать, чтобы реализовать этот функционал?

Варианты ответа:

  1. Добавить элемент <input type="hidden"> с нужным значением внутри формы.
  2. Вставить скрытый элемент <input type="text" style="display: none;"> и установить его значение через JavaScript.
  3. Использовать элемент <input type="password" hidden> для передачи данных на сервер.
  4. Добавить элемент <input type="hidden"> с атрибутом value="0" и затем изменить его значение через CSS.
  5. Использовать атрибут hidden внутри элемента <input> и задать ему значение через JavaScript.

Обоснование:
Скрытое поле <input type="hidden"> является стандартным HTML-элементом для передачи данных на сервер, которые пользователь не видит и не вводит вручную. Этот тег:

  • Отображается как невидимый элемент.
  • Позволяет указать значение с помощью атрибута value.
  • Прост и интуитивно понятен.

Разбор вариантов:

  1. Правильный подход: Использование <input type="hidden"> — стандартный и рекомендуемый способ решения задачи.
  2. Использование <input type="text" style="display: none;"> создаёт элемент, который скрыт через CSS, но это усложняет код и не рекомендуется.
  3. <input type="password" hidden> используется для паролей, но это неверный способ передачи данных, так как оно не является скрытым полем.
  4. Изменение значения через CSS невозможно, так как CSS не работает с атрибутами.
  5. Использование атрибута hidden в <input> некорректно, так как атрибут hidden предназначен для скрытия HTML-элементов, а не для передачи данных.

Правильный ответ:
1. Добавить элемент <input type="hidden"> с нужным значением внутри формы.

Вопрос 6

Вы добавляете текстовый блок на веб-страницу, который содержит цитату. Какой атрибут вам нужно использовать в элементе <blockquote>, чтобы указать источник цитаты?

Варианты ответа:

  1. Атрибут title в элементе <blockquote>
  2. Атрибут link в элементе <blockquote>
  3. Атрибут cite в элементе <blockquote>
  4. Атрибут src в элементе <blockquote>
  5. Атрибут href в элементе <blockquote>

Обоснование:

Тег <blockquote> используется для выделения больших блоков цитат. Чтобы указать источник цитаты, HTML предоставляет атрибут cite. Этот атрибут позволяет добавить URL-адрес или текст, который идентифицирует источник цитируемого материала.

Разбор вариантов:

  1. title: Используется для создания всплывающей подсказки, но не подходит для указания источника.
  2. link: Не существует как атрибут для тега <blockquote>.
  3. cite: Это правильный атрибут для указания источника цитаты.
  4. src: Используется для тегов <img>, <audio>, <video>, но не для <blockquote>.
  5. href: Используется для ссылок в теге <a>, но не для <blockquote>.

Правильный ответ:
3. Атрибут cite в элементе <blockquote>

Вопрос 7

Какая ошибка допущена в следующем коде?

Исходный код:

Варианты ответа:

  1. Отсутствует обязательная заголовочная ячейка таблицы <th>.
  2. Элемент <td colspan="2">Ячейка 3</td> лишний.
  3. Элемент <td>Ячейка 4</td> лишний.
  4. У тега <table> отсутствует обязательный атрибут border.
  5. У тегов <tr> отсутствует обязательный атрибут char.

Обоснование:

При анализе кода выявляются следующие моменты:

  1. Обязательная заголовочная ячейка (<th>): Строго обязательной заголовочной ячейки в таблице нет, если это не таблица с заголовками.
  2. Использование colspan="2": Данная конструкция указывает, что ячейка занимает две колонки. Однако в текущем коде вторая ячейка (<td>Ячейка 4</td>) идёт следом, что приводит к нарушению структуры таблицы (слишком много ячеек в строке).
  3. Элемент <td>Ячейка 4</td>: Он действительно лишний, так как строка уже занята ячейкой с атрибутом colspan="2".
  4. Атрибут border: Он необязательный и используется только для визуального оформления.
  5. Атрибут char: Он устарел и редко используется в HTML5.

Правильный ответ:
3. Элемент <td>Ячейка 4</td> лишний.

Вопрос 8

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

Варианты ответа:

  1. Тег <track> с атрибутом kind="descriptions"
  2. Тег <track> с атрибутом kind="chapters"
  3. Тег <track> с атрибутом kind="metadata"
  4. Тег <track> с атрибутом kind="subtitles"
  5. Тег <track> с атрибутом kind="captions"

Обоснование:

  • Тег <track> используется для добавления текстовых дорожек к мультимедийным элементам, например <video> или <audio>. Это могут быть субтитры, описания, главы и другая информация.
  • Атрибут kind определяет тип добавляемой дорожки:subtitles: Используется для субтитров, отображаемых на экране для зрителей.
    captions: Предназначен для текстов, которые включают дополнительную информацию для людей с ограничениями по слуху (например, описания звуков).
    descriptions: Описывает визуальные элементы для людей с нарушениями зрения.
    chapters: Обозначает главы мультимедийного контента.
    metadata: Хранит метаданные, не отображаемые пользователю.

Так как вопрос касается обычных субтитров для пользователей, необходимо использовать атрибут kind="subtitles".

Правильный ответ:
4. Тег <track> с атрибутом kind="subtitles".

Вопрос 9

Вам нужно создать навигационное меню в шапке сайта. Что необходимо сделать, чтобы реализовать этот функционал?

Варианты ответа:

  1. Обернуть навигационное меню тегом <header>, а внутри использовать тег <menu>
  2. Использовать только тег <nav> без дополнительных тегов
  3. Вложить тег <nav> внутри тега <header>
  4. Вложить тег <header> внутри тега <nav>
  5. Обернуть навигационное меню тегом <header>, а внутри использовать тег <nav>

Обоснование:

  1. Тег <header>: Используется для обозначения заголовочной части страницы или раздела. Внутри него часто размещают логотип, название сайта, навигацию и другие ключевые элементы шапки.
  2. Тег <nav>: Это семантический элемент, используемый для определения основного блока навигации (меню).
  3. Правильная структура: По стандарту HTML5, навигационное меню, расположенное в шапке сайта, обычно создаётся следующим образом:<header> оборачивает шапку сайта.
    <nav> располагается внутри <header> для обозначения навигационного меню.

Другие варианты:

  • <menu>: Устаревший тег, который редко используется и не подходит для современных семантических структур.
  • Использование только <nav>: Это нарушает логику структуры страницы, так как шапка сайта должна быть явно обозначена.
  • Вложение <header> в <nav>: Нарушение семантики HTML5, так как <header> — более общий контейнер.

Правильный ответ:
5. Обернуть навигационное меню тегом <header>, а внутри использовать тег <nav>.

Вопрос 10

С помощью SVG вам необходимо нарисовать прямоугольник. Каким тегом вы воспользуетесь?

Варианты ответа:

  1. <path>
  2. <polygon>
  3. <rect>
  4. <circle>
  5. <line>

Обоснование:

  • <path>: Используется для сложных форм и кривых, а не для стандартных геометрических фигур.
  • <polygon>: Предназначен для многоугольников с произвольным числом сторон, что делает его избыточным для простого прямоугольника.
  • <rect>: Это правильный тег для создания прямоугольников и квадратов в SVG. У него есть атрибуты x, y, width, и height, которые позволяют задать размеры и положение прямоугольника.
  • <circle>: Применяется для рисования окружностей.
  • <line>: Используется для рисования линий, а не фигур.

Правильный ответ:
3. <rect>

Вопрос 11

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

Анализ вариантов:

  1. hero__element--active: Этот вариант соответствует методологии БЭМ (Блок, Элемент, Модификатор). Блок — это hero, элемент — это hero__element, а активное состояние обозначается модификатором --active. Данный подход является правильным.
  2. hero_active__element: Не соответствует правилам БЭМ, так как модификатор должен быть после элемента, а не перед ним.
  3. <divclass="hero">: Неверное написание атрибута class. Между div и class отсутствует пробел.
  4. hero__element hero__element--active: Этот вариант корректен и допускается, если необходимо использовать два класса (основной и модификатор).
  5. hero__element hero__element-active: Использование -active вместо --active нарушает правила БЭМ.

Правильный ответ:
4. <div class="hero"> <div class="hero__element hero__element--active"></div> </div>

Вопрос 12

Вы создаете карточку продукта на веб-странице, содержащую изображение, название и цену. Чтобы сделать карточку доступной для пользователей с ограниченными возможностями, как вы должны разметить изображение?

Варианты ответа:

  1. Использовать тег <figure> и <figcaption> для добавления описания к изображению.
  2. Добавить атрибут role="img" для явного указания, что элемент является изображением.
  3. Использовать атрибут alt с описанием изображения.
  4. Добавить атрибут aria-label для предоставления альтернативного текста.
  5. Использовать CSS для визуального скрытия текста, связанного с изображением.

Обоснование:

  1. Использовать <figure> и <figcaption>: Эти теги полезны для добавления подписи к изображению, но они не являются обязательными для доступности и не заменяют alt.
  2. Добавить role="img": Этот атрибут может быть использован, но он не обязателен для стандартного тега <img>, так как <img> уже имеет встроенную семантику.
  3. Использовать атрибут alt: Это лучший подход для обеспечения доступности, так как alt предоставляет альтернативный текст для экранных читалок, используемых людьми с нарушениями зрения.
  4. Добавить aria-label: Этот атрибут может быть использован, но для тега <img> лучше использовать alt, так как он предназначен специально для описания изображений.
  5. Использовать CSS для скрытия текста: Это никак не улучшает доступность, а только скрывает текст.

Правильный ответ:
3. Использовать атрибут alt с описанием изображения.

Вопрос 13

На странице присутствует уведомление об ошибке, которое появляется после неправильного ввода данных. Какой атрибут ARIA необходимо использовать, чтобы указать вспомогательным технологиям, таким как скринридер, что это сообщение — предупреждение?

Варианты ответа:

  1. Атрибут aria-checked="true"
  2. Атрибут aria-label="warning"
  3. Атрибут aria-expanded="true"
  4. Атрибут aria-live="assertive"
  5. Атрибут aria-hidden="true"

Обоснование:

  1. aria-checked="true": Используется для обозначения состояния элемента, например, чекбокса, и не подходит для предупреждений.
  2. aria-label="warning": Предназначен для описания элемента, но не сигнализирует о предупреждении.
  3. aria-expanded="true": Применяется для раскрывающихся элементов, например, аккордеонов, и не имеет отношения к уведомлениям.
  4. aria-live="assertive": Это правильный ответ, так как этот атрибут сообщает вспомогательным технологиям о том, что сообщение имеет высокий приоритет и должно быть немедленно озвучено пользователю (например, в случае ошибки).
  5. aria-hidden="true": Противоположный атрибут, который скрывает элемент от вспомогательных технологий, что не подходит для уведомлений.

Правильный ответ:
4. Атрибут aria-live="assertive".

Заключение

Дорогие читатели! Если материалы данной статьи помогли вам успешно пройти тест на платформе HeadHunter, буду признателен, если вы поставите лайк 👍🏻 именно той статье, которая соответствовала вашему уровню подготовки. Также, если тестирование оказалось неудачным ❌, пожалуйста, оставьте комментарий 📝 с указанием количества ошибок допущенных в тесте.

Эта обратная связь чрезвычайно важна. Она позволит в дальнейшем проанализировать эффективность материалов, а также создать аналитическое заключение для всей серии статей по прохождению тестирования на платформе. Спасибо за вашу помощь в совершенствовании контента!