Новое:Talanto осенью: поиск с цифрами, вакансия по шагам и каталог компаний

+687новых вакансий за сутки·55 254вакансии открыты сейчас·Новое:Talanto осенью: поиск с цифрами, вакансия по шагам и каталог компаний

Новые вакансии в TelegramРаботодателям
Talanto
Вакансии
Компании5 791
РезюмеAIПодготовкаСтатьи
ТарифыТарифы
Войти

Не нашли подходящее?

Пусть нужная вакансия найдёт вас сама.

  1. Подборка в TelegramНовые вакансии по вашему фильтру — сразу в бота.Подключить
  2. Мэтчи по резюмеЗагрузите резюме — покажем, где вы подходите лучше всего.Загрузить
  3. Сохранить фильтрНастройте поиск один раз и возвращайтесь к новым вакансиям.Настроить
Что нового на TalantoTalanto осенью: поиск с цифрами, вакансия по шагам и каталог компаний

Для работодателей

Опубликуйте вакансию — отклики придут в ваш кабинет.

  1. Вакансиябесплатно
  2. Откликиконтакты бесплатно
  3. Наймэтапы и интервью

40 компаний публикуют вакансии напрямую · 4 391 кандидат открыт к предложениям

Разместить вакансию

Популярные направления

Все подборки
  • Python7 042
  • Облачные технологии5 085
  • QA вакансии1 814
  • Android1 199
  • Инженер данных831
  • Продакт-менеджер339

Разработка

  • iOS1 135
  • Backend вакансии1 131
  • Fullstack вакансии475
  • AI вакансии458
  • Frontend вакансии404
  • Mobile вакансии27

По стеку

  • Go4 093
  • Java2 435
  • Kotlin990
  • Node.js827
  • Rust665
  • .NET525
  • PHP282
  • C++223
  • C#199

DevOps и инфраструктура

  • Kubernetes2 931
  • Linux-инфраструктура2 312
  • DevOps вакансии2 110
  • Terraform / IaC1 714
  • CI/CD872
  • Мониторинг и Observability825
  • SRE253
  • Кибербезопасность50

Аналитика и данные

  • Аналитик данных497
  • Data Scientist463
  • Бизнес-аналитик374
  • Системный аналитик54

Другие направления

  • Проджект-менеджер119
  • UI/UX дизайн72
  • Ручное тестирование14

По регионам

  • Вакансии в США25 531
  • Вакансии в Европе9 792
  • Работа в России3 193
  • Вакансии в Канаде2 236

По формату

  • Удалённые вакансии43 578
  • Релокация в США25 531
  • Гибридная работа4 289
  • Офисная работа3 340

По уровню

  • Senior вакансии21 650
  • Middle вакансии12 211
  • Junior вакансии3 886

Сейчас нанимают

Все компании
  • Rakuten188 вакансий
  • ASML163 вакансии
  • Grab134 вакансии
  • Wise125 вакансий
  • Celonis28 вакансий
  • Infobip28 вакансий
  • Spotify24 вакансии
  • Adyen17 вакансий
  • Darktrace17 вакансий
  • Monzo13 вакансий

Вакансии из 344 источников: карьерные страницы компаний и джоб-борды.

КомпанииО насНовостиПубличная офертаУсловия использованияПолитика конфиденциальностиПоддержка
←К теме HTML/CSSВсе вопросы
HTML/CSSMiddleТеория

Что такое ARIA-атрибуты и почему они важны для доступности (accessibility)?

В закладки
Сначала попробуйте ответить сами30 секунд
Сравнить с ответом ↓

ARIA-атрибуты расширяют дерево доступности браузера ролями, состояниями и свойствами — вспомогательные технологии (screen readers) читают именно его. Первое правило ARIA: используй нативный HTML-элемент там, где он есть.

Практический пример: аккордеон

<!-- Кнопка-триггер -->
<button
  id="faq-trigger-1"
  aria-expanded="false"
  aria-controls="faq-panel-1"
>
  Как оформить возврат?
</button>

<!-- Панель -->
<div
  id="faq-panel-1"
  role="region"
  aria-labelledby="faq-trigger-1"
  hidden
>
  <p>Заполните форму на сайте в течение 14 дней...</p>
</div>
const trigger = document.getElementById('faq-trigger-1');
const panel   = document.getElementById('faq-panel-1');

trigger.addEventListener('click', () => {
  const expanded = trigger.getAttribute('aria-expanded') === 'true';
  trigger.setAttribute('aria-expanded', String(!expanded));
  panel.hidden = expanded; // toggle видимость
});

Скринридер объявит: «Как оформить возврат? Кнопка, свёрнуто». После клика — «развёрнуто». Без aria-expanded пользователь не узнает, что панель открылась.

Что такое дерево доступности

Браузер строит два дерева из HTML: DOM-дерево (для рендеринга) и дерево доступности (Accessibility Tree) — для вспомогательных технологий: скринридеров, программ управления голосом, брайлевских дисплеев. Каждый узел дерева доступности содержит роль, имя, состояние и свойства. ARIA (Accessible Rich Internet Applications) — это набор атрибутов, которые позволяют управлять этим деревом напрямую, когда нативной семантики HTML недостаточно.

Три группы ARIA-атрибутов

  • Роли (role) — что это за элемент: role="dialog", role="tab", role="alert". Перекрывают нативную семантику тега.
  • Состояния — динамически меняются в зависимости от UI: aria-expanded, aria-checked, aria-disabled, aria-pressed.
  • Свойства — описывают связи и метаданные: aria-label, aria-labelledby, aria-describedby, aria-controls, aria-live.

Первое правило ARIA

Если существует нативный HTML-элемент или атрибут с нужной семантикой — используй его, а не ARIA. <button> уже несёт роль button, фокусируется с клавиатуры и реагирует на Enter/Space. ARIA это не заменит — она только объявляет роль скринридеру, но не добавляет клавиатурное поведение автоматически.

Live-регионы: динамический контент

<!-- Скринридер озвучит содержимое автоматически при изменении -->
<div
  role="status"
  aria-live="polite"
  aria-atomic="true"
></div>
async function submitForm(data) {
  const status = document.querySelector('[role="status"]');
  try {
    await api.post('/orders', data);
    status.textContent = 'Заказ оформлен. Номер: #4821';
  } catch {
    status.textContent = 'Ошибка при оформлении. Попробуйте снова.';
  }
}

aria-live="polite" — скринридер дочитает текущее предложение и только потом огласит обновление. aria-live="assertive" — перебивает немедленно (только для критических ошибок).

Именование элементов: aria-label vs aria-labelledby

<!-- Иконочная кнопка без видимого текста -->
<button aria-label="Закрыть диалог">
  <svg aria-hidden="true">...</svg>
</button>

<!-- Поле, связанное с видимым заголовком -->
<h2 id="shipping-title">Адрес доставки</h2>
<input aria-labelledby="shipping-title" type="text" />

aria-hidden="true" на SVG убирает его из дерева доступности — иначе скринридер попытается прочитать пути SVG как текст.

Подводные камни

  • ARIA не добавляет поведение. role="button" на <div> объявит роль скринридеру, но div не фокусируется Tab и не реагирует на Enter без явного tabindex="0" и обработчика keydown. Используй <button>.
  • Несинхронное состояние. Открыл панель, но забыл переключить aria-expanded — скринридер говорит «свёрнуто», хотя контент виден. Состояния ARIA нужно обновлять в том же обработчике, что и визуальные изменения.
  • Дублирование имён. Кнопка с текстом «Удалить» и aria-label="Удалить товар из корзины» — нормально. Кнопка с текстом «Удалить товар из корзины» и тем же aria-label — скринридер прочитает label, проигнорирует текст. Следи, чтобы видимый текст и aria-имя не противоречили друг другу.
  • Избыточный aria-hidden. aria-hidden="true" на контейнере, внутри которого есть фокусируемые элементы — создаёт «невидимые» кнопки, на которые попадает Tab-фокус, но скринридер не объявляет их содержимое.
  • role="presentation" не то же самое, что aria-hidden. role="presentation" убирает семантику элемента, но дочерние элементы остаются в дереве. Это не «скрыть» элемент.
  • Живые регионы — только пустые при инициализации. Если aria-live-контейнер уже содержит текст при загрузке страницы, скринридеры не объявят его — только последующие изменения.
  • Поддержка комбинаций browser+AT неоднородна. aria-expanded на <select> игнорируется в большинстве скринридеров. Перед внедрением нестандартного паттерна проверяй матрицу поддержки на a11ysupport.io.
  • Не злоупотребляй role="alert". Alert — assertive live region. Несколько одновременных alert-элементов на странице (ошибки валидации формы) создадут хаос — скринридер будет перебивать себя. Используй одну область с aria-live="polite" или суммарное сообщение.

Частые вопросы на собеседовании

  • Что такое семантический HTML и почему он важен? Приведите примеры семантических элементов.
  • В чём разница между <script> с атрибутами defer и async?
  • В каких типах frontend-проектов HTML/CSS даёт реальный выигрыш, а где будет избыточен или неудачен?
  • Что такое Flexbox и чем он отличается от Grid? Когда использовать каждый?

Типичные ошибки

  • Смешивать «ARIA-атрибуты» с похожим механизмом без критерия выбора.
  • Игнорировать риск: неверно оценить границы применения темы «ARIA-атрибуты» и получить хрупкое решение.
  • Показывать только синтаксис и не объяснять поведение в runtime или сборке.

Что проверяет интервьюер

  • Объясняет доступность интерактивных интерфейсов, когда нативной семантики недостаточно.
  • Показывает на примере, как работает: ARIA дополняет дерево доступности ролями, состояниями и свойствами, но не добавляет клавиатурное поведение и не исправляет неверный выбор HTML-элемента автоматически.
  • Называет production-нюанс и граничный случай для темы «ARIA-атрибуты».

Как вы знаете этот вопрос?

Проверить себя по теме HTML/CSS →

Источники

  • https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA
←Предыдущий вопросВ чём разница между блочными (block-level) и строчными (inline) элементами в HTML?Следующий вопрос→Расскажите о случае, когда вы улучшали performance, accessibility, testing или maintainability в проекте на HTML/CSS.

Связанные темы

HTML/CSSAccessibilitykeyboard-navigation