Перейти к содержимому

Для чего предусмотрена кнопка в бургер меню

  • автор:

Гамбургер-меню

Ольга Голубова

Гамбургер-меню (от англ. «hamburger menu») — это значок (иконка) меню, который используется дизайне сайтов, программного обеспечения и заменяет кнопку со словом «Меню» или «Файл».

Иногда эту иконку называют просто «Гамбургер» или «Меню Хот-Дог», либо «Трёхстрочное меню», потому что у значка три горизонтальные линий.

Он так называется, потому что очень уж схож с классическим гамбургером: верхняя и нижняя полосы имитируют булку, а средняя — котлету. При нажатии на иконку открывается выпадающее меню.

Многих пользователей интересует, можно ли открыть такое меню с помощью горячей кнопки. Пока быстрой клавиши для доступа к этому меню нет, но некоторые программы позволяют открыть гамбургер нажатием клавиши Alt на клавиатуре.

Свяжите сервисы между собой без программистов за 5 минут!

Изначально иконка символизировала список, но позже устоялось название «гамбургер». Стандартом для изображения кнопки меню эта иконка стала с 2010 года и теперь постоянно используется в графическом интерфейсе.

Автор иконки — дизайнер Норм Кокс. Он хотел создать простое, лаконичное и понятное изображение, похожее на список и придумал эту идею давно, в 1981 году для Xerox Star. Но использоваться иконка начала с 2000-х годов в мобильных интерфейсах, а обрела свою популярность после того, как появилась в в мобильном приложении Фейсбука для Айфонов в 2010 году.

Сегодня такое меню можно встретить в подавляющем большинстве приложений, она стала стандартом для графического дизайна, хотя многие дизайнеры критикуют её и предлагают найти замену, потому что считают, что не всем пользователям понятно, что означает эта иконка. Были даже проведены A/B-тесты, показавшие, что если поменять значок гамбургера на слово «Меню», то это облегчает пользователям навигацию.

Однако другие специалисты утверждают, что к гамбургеру уже все привыкли и он стал неотъемлемой частью визуального оформления, а эксперимент с A/B-тестами и заменой иконки на слово «Меню» показал несущественное влияние на поведение пользователей.

Настроить интеграцию без программистов ApiX-Drive

Статьи о маркетинге, автоматизации и интеграциях в нашем Блоге

Промокоды Деливери на январь 2024

Скидка предоставляется по промокоду и действует на первый заказ из магазинов. Данный промокод могут использовать только покупатели, не делавшие ранее заказ из магазинов через Деливери.

Промокод активен до 3 февраля 2024

Промокод можно использовать только при первом заказе после привязки карты. Максимальный размер скидки 2000 рублей.

Промокод активен до 9 марта 2024

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

Промокод активен до 1 марта 2024

Скидка предоставляется по промокоду и действует при заказе на сумму от 1800 рублей в MYBOX. Предложение доступно для всех покупателей.

Промокод активен до 9 марта 2024

Бесплатная доставка предоставляется по промокоду при заказе на сумму от 1200 рублей.

Промокод активен до 10 февраля 2024

Бесплатная доставка из магазина «Магнит» в Москве и Московской области предоставляется при заказе товаров на сумму от 2000 рублей, а в большинстве городов России — при заказе от 500 рублей. Минимальная сумма заказа может меняться.

Промокод активен до 9 марта 2024

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

Старые купоны Market-delivery.yandex.ru

Промокод активен до 9 декабря 2023

Используйте промокод, если ранее не делали заказ из магазинов через Маркет Деливери. Максимальный размер скидки по промокоду 530 руб. Требуется привязка карты.

Промокод активен до 10 ноября 2023

Воспользуйтесь промокодом и получите 35% скидки (но не более 550 рублей) на первый заказ. Данный промокод могут использовать только покупатели, не делавшие ранее заказ из магазинов через Маркет Деливери.

Промокод активен до 10 ноября 2023

Промокод действует при заказе от 999 руб. Код СРАБОТАЕТ, даже если у вас уже был заказ из магазинов.

Промокод активен до 10 ноября 2023

Скидка предоставляется по промокоду и действует при первом заказе на сумму от 800 рублей. Данный промокод можно использовать при заказе в ресторанах с меткой «-14% с 14LUCK «.

Промокод активен до 9 декабря 2023

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

Промокод активен до 3 сентября 2023

Скидка предоставляется по промокоду и действует при заказе товаров для школы из магазина «Комус» через Маркет Деливери. Данное предложение действует только на первый заказ из категории «Магазины» в Маркет Деливери.

Промокод активен до 13 августа 2023

Промокод действует ТОЛЬКО для новых пользователей Маркет Деливери в Москве и Санкт-Петербурге.
Переходите по ссылке в приложение Маркет Деливери, выбирайте ресторан Black Star Burger и добавляйте в заказ блюда на сумму от 1200 рублей. Применяйте промокод, 3 гамбургера БЕСПЛАТНО вы получите вместе с заказом.

Промокод активен до 7 октября 2023

Бесплатная доставка из KFC предоставляется по промокоду при заказе от 700 рублей.

Промокод активен до 1 августа 2023

Переходи по ссылке в сервис МАГНИТ доставка. Промокод действует при первом заказе на сумму от 1000 рублей.

Промокод активен до 26 июля 2023

Для того, чтобы воспользоваться предложением, необходимо установить мобильное приложение «Маркет Деливери: еда, продукты» и применить промокод при оформлении первого заказа из выбранного магазина.

Общая информация о сервисе доставки еды из ресторанов Деливери

Market-delivery.yandex.ru – это официальный сайт сервиса доставки еды из ресторанов. Здесь представлены сотни служб, среди которых пользователь может выбрать наиболее выгодное предложение. Также клиенты получают возможность оценивать качество работы, публиковать отзывы, принимать участие в акциях и круглосуточно заказывать любимые блюда.

Ассортимент продукции сервиса доставки еды из ресторанов Деливери

Нет времени готовить? Отдайте эту работу профессионалам, которые создадут ваш любимый кулинарный шедевр. А чтобы ваш заказ был выгодным, ознакомьтесь с предложениями на сайте сервиса доставки еды из ресторанов Market-delivery.yandex.ru. Здесь вы найдёте службы доставки пиццы, суши, бургеров, кошерного и вегетарианского меню, здоровой еды и халяль, шашлыков, десертов и много другого.

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

Как оформить заказ со скидкой на сайте сервиса доставки еды из ресторанов Деливери?

Вы можете заказать любимые блюда напрямую у своей обычной службы доставки или же сравнить цены, выбрав лучшее предложение по стоимости на сайте сервиса доставки еды из ресторанов Мarket-delivery.yandex.ru. Кроме большого количества наиболее популярных компаний, вы здесь можете использовать специальные возможности, позволяющие сэкономить на любимом блюде, а именно:

  • мобильное приложение для iPhone – скачайте приложение, делайте заказы и получайте дополнительные бонусы для будущих покупок;
  • промокоды – уникальные сочетания букв и цифр, позволяющие приобретать товары с дополнительными скидками;
  • карта Много.ру – владельцы данной карты получают бесплатные призы при её использовании;
  • программа лояльности – позволяет зарегистрированным пользователям получать баллы при совершении покупок и тратить их на любимые блюда.

Как правильно активировать промокод на сайте сервиса доставки еды из ресторанов Деливери?

Если вы хотите получить скидку уже при первом онлайн заказе, то воспользуйтесь специальным значение купона. Как правило, данный код не требует регистрации или подписки на новостную ленту. Для его активации достаточно ввести значение в корзину при оформлении заказа. Данный купон должен обязательно распространяться на выбранную категорию товаров.

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

Для успешной активации промокода следует совершить такую процедуру:

Поле для ввода купона Деливери Клаб

  1. скопировать значение купона с данной страницы;
  2. перейти на сайт сервиса доставки еды из ресторанов Мarket-delivery.yandex.ru;
  3. выбрать интересующую службу доставки;
  4. добавить в корзину товары;
  5. ввести в специальном поле значение промокода и нажать кнопку «Подтвердить»;
  6. проверить активацию купона;
  7. завершить покупку.

Стоит отметить, что не все представленные службы доставки еды предоставляют возможность использования купона. Для выбора этой опции поставьте «галочку» в фильтре напротив параметра «с промокодом на скидку». Обратите внимание на срок действия используемого кода, он должен быть актуальным на момент покупки.

Для активации дисконта некоторыми условиями акции предусмотрена минимальная стоимость заказа. Также на позиции из категории «Новинки» и т.д. скидка по купону может не распространяться. Пользователь может оформить не более трёх заказов в сутки с использованием промокода.

Как оформить заказ на сайте сервиса доставки еды из ресторанов Деливери?

Определившись с перечнем заказываемых позиций, вам достаточно оформить заявку на доставку понравившихся блюд в пару кликов:

  1. зарегистрироваться на сайте, авторизоваться или оформить заказ без регистрации;
  2. выбрать понравившуюся службу доставки;
  3. добавить понравившиеся блюда в корзину;
  4. ввести в отдельном поле значение промокода и активировать его;
  5. заполнить пустые поля контактных данных при необходимости;
  6. выбрать вариант и время доставки;
  7. указать наиболее удобный способ оплаты;
  8. указать комментарий при необходимости;
  9. завершить оформление заказа.

Покупатель может оплатить заказанную продукцию наличными или картой при получении. Кроме этого, доступна возможность онлайн расчёта через карты VISA и MasterCard.

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

Пользователь может отказаться от заказа и получить назад свои денежные средства, если предоставит в течение суток с момента получения блюд соответствующую информацию консультантам сервиса доставки еды из ресторанов Маркет Деливери. Ознакомиться с причинами возврата продукции можно в разделе «Пользовательское соглашение».

Реклама. Информация о рекламодателе по ссылке в карточке акции.

Ин­клю­зив­ные ком­по­нен­ты: меню и кноп­ки меню

Классифицировать сложно. Например, возьмём крабов. Раки-отшельники, веерные крабы и подковообразные крабы, с точки зрения таксономии, не настоящие крабы, но это не мешает использовать в их названиях слово «краб». Всё становится ещё запутаннее, когда через какое-то время благодаря процессу, называемому канцеризацией, ненастоящие крабы эволюционируют, чтобы больше походить на настоящих. Это то, что произошло с королевскими крабами, которые в прошлом были раками-отшельниками. Представьте размеры их раковин!

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

Классический пример — термин «выпадающий список» (dropdown). В интерфейсах многие вещи «выпадают», включая в , и подменю навигации со списком ссылок, которое раскрывается с помощью JavaScript. Одинаковые названия — разные явления. Некоторые называют это «выпадающее меню» (pull-down menu), но давайте не вдаваться в подробности.

Выпадающие списки, которые состоят из нескольких пунктов, часто называют «меню». Об этом я и хочу поговорить в этой статье. Мы будем делать настоящее меню, но по пути обсудим их не совсем настоящие реализации.

Давайте начнём с вопроса: является ли блок ссылок с картинки, выпадающий вниз из панели навигации, меню?

Правильный ответ: нет, это не настоящее меню.

То, что навигационная схема состоит из списков или ссылок — давнее соглашение. Оно почти так же давно предписывает, что дополнительная навигация (sub-navigation) должна быть вложенными списками со ссылками. Если бы я удалил стили для компонента, показанного выше, я бы увидел что-то вроде этого списка ссылок, только с Times New Roman и синего цвета.

• [Главная](#) • [О нас](#) • [Магазин](#) ◦ [Одежда для собак](#) ◦ [Вафельницы](#) ◦ [Магические шары](#) • [Контакты](#) 

С точки зрения семантики вложенные списки со ссылками в этом контексте корректны. Системы навигации на самом деле оглавления: именно так они устроены. Единственное, что действительно заставляет думать, что перед нами меню — это стилизация вложенных списков и способ их отображения при наведении курсора или при фокусе.

В этом месте часто ошибаются и начинают добавлять семантику из WAI-ARIA: aria-haspopup=»true» , role=»menu» , role=»menuitem» и так далее. Их можно использовать, но в другом контексте. Вот две причины для этого:

  1. ARIA-меню предназначены не для навигации, а для десктопных приложений. Представьте себе систему меню для любого из них.
  2. Ссылка верхнего уровня должна быть ссылкой. То есть она не ведёт себя как кнопка меню.

Относительно второго пункта: при перемещении по области навигации в подменю ожидаешь, что каждое подменю будет появляться при наведении или при фокусе на ссылке верхнего уровня (например, «Магазин» из примера выше). Это одновременно показывает подменю и размещает ссылки в нём в порядке получения фокуса. С помощью JavaScript можно управлять событиями фокуса (focus) и его потери (blur) и сохранить внешний вид подменю пока это необходимо. При этом те, кто использует для навигации клавиатуру, должны иметь возможность переходить по очереди от одной ссылки каждого уровня к другой.

Кнопки меню, которым задан атрибут aria-haspopup=»true» , так себя не ведут. Они становятся активными по клику и у них нет другой цели кроме показа скрытого меню.

Как показано на картинке, вне зависимости от того раскрывается меню или скрывается, это будет объявлено благодаря атрибуту aria-expanded . Вам нужно только изменить это состояние при клике, а не при фокусе. Пользователи обычно не ожидают явного изменения состояния при простом событии фокуса. На самом деле в нашей системе навигации состояние не изменяется. Это просто трюк со стилизацией. С точки зрения поведения мы можем перемещаться с помощью клавиши Tab так, как если бы не было никакого трюка с показом и скрытием элемента.

Проблема с навигационными подменю Скопировать ссылку

Навигационные подменю (или для кого-то «выпадающие списки») отлично работают с мышью или с клавиатуры, но не так хороши для касаний. Когда вы в первый раз нажимаете на ссылку верхнего уровня «Магазин» из примера, то сообщаете, что надо открыть подменю и перейти по ссылке.

Здесь есть два возможных варианта решения проблемы:

  1. Избежать поведения по умолчанию ссылок верхнего уровня ( e.preventDefault() ) и написать скрипт для полной поддержки семантики и поведения меню WAI-ARIA.
  2. Убедиться, что каждая страница, на которую ведёт ссылка верхнего уровня меню, имеет оглавление в качестве альтернативы подменю.

Первое решение не самое хорошее. Я ранее замечал, что этот тип семантики и поведения нежелателен в данном контексте, где ссылки — это управляемые контролы (subject controls). Кроме того пользователи больше не смогут переходить на страницу верхнего уровня, если она есть.

Какие устройства — сенсорные? Скопировать ссылку

Заманчиво думать: «Это не самое хорошее решение, но я применю его только для сенсорных интерфейсов». Проблема в том, как определить, есть ли у устройства сенсорный экран?

Вам точно не стоит относить любой «маленький экран» к разряду «экранов с сенсорным управлением». Работая в одном офисе с людьми, разрабатывающими сенсорные дисплеи для музеев, я могу заверить вас, что самые большие экраны — сенсорные. Не забывайте о ноутбуках с клавиатурой и сенсорным дисплеем.

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

Второе решение более инклюзивное и надёжное. Это «фолбэк» для пользователей всех устройств. Но я специально взял в кавычки это слово, потому что думаю, что на самом деле постраничные оглавления — это лучший способ обеспечения навигации.

Похоже, получившая премию команда Government Digital Services с этим согласится. Вы также могли видеть такие оглавления в Wikipedia.

Оглавление Скопировать ссылку

Оглавления — это навигация для связанных между собой страниц или их разделов, которые должны быть семантически похожи на основные области навигации сайта. Для них используются элементы с , списки и общие подписи к ним.

Примечания Скопировать ссылку

  • В этом примере мы представляем каждый раздел как отдельную страницу, как если бы это было в выпадающем подменю.
  • Важно, чтобы каждая страница из «Магазин» имела одинаковую структуру. Поэтому оглавление «Продукты» находится в одном и том же месте. Консистентность улучшает понимание.
  • Список группирует элементы, а вспомогательные технологии могут установить их количество и объявить о них, например, с помощью синтезированного голоса в скринридерах.
  • Тегу заголовок задан с помощью атрибута aria-labelledby . Это означает, что большинство скринридеров объявит «Продукты, навигация» при попадании в область с помощью клавиши Tab . Также это приведёт к тому, что такая навигация будет разбита скринридерами на отдельные элементы, через которые пользователи смогут переходить к областям страницы напрямую.

Всё на одной странице Скопировать ссылку

Если вы можете поместить все разделы на одной странице, при этом не сделав её слишком длинной и избежав утомительной прокрутки, то так даже лучше. Просто задайте для каждого раздела якорную ссылку. Например, href=»#waffle-irons» должна вести к id=»waffle-irons» .

Примечание: в некоторых браузерах фокус плохо переносится на отдельные фрагменты страницы. Добавление tabindex=»-1″ к нужному фрагменту исправляет это.

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

На некоторых сайтах, включая правительственный цифровой сервис gov.uk, есть страницы с указателями (или «темами»), которые представляют собой просто оглавления. Это настолько мощная концепция, что популярный генератор статических сайтов Hugo создаёт такие страницы по умолчанию.

Информационная архитектура — это важная часть инклюзивности. Плохо организованный сайт может соответствовать нужным вам техническим требованиям, но при этом будет отталкивать многих пользователей. Особенно это касается тех, у кого есть когнитивные нарушения или у кого мало времени на то, чтобы с чем-то долго разбираться.

Кнопки навигационного меню Скопировать ссылку

Пока мы обсуждаем тему фальшивых навигационных меню, было бы упущением с моей стороны не поговорить про кнопки меню. Вы наверняка видели состоящую из трёх линий иконку-гамбургер или «navicon».

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

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

  1. Быть кнопкой, а не ссылкой.
  2. Содержать информацию о развёрнутом или свёрнутом состоянии соответствующего меню (которое, строго говоря, представляет собой просто список ссылок).

Прогрессивное улучшение Скопировать ссылку

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

В изначальном HTML-файле мало что можно сделать с помощью кнопок (кроме кнопок для отправки данных, но они даже близко не связаны с тем, что нам нужно сделать). Может быть, вместо этого, нам следует начать с простой ссылки, которая приведёт нас к навигации?

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

Вы улучшите его, добавив кнопку, которая в исходном состоянии скрывает навигацию с помощью атрибута hidden :

Некоторые более старые браузеры, сами знаете какие, не поддерживают hidden , так что не забудьте учесть это в вашем CSS. Селектор ниже решит эту проблему, так как display: none делает то же самое, что и атрибут hidden : скрывает меню от вспомогательных технологий и удаляет ссылку из порядка получения фокуса.

[hidden]

Делать всё возможное для поддержки старого программного обеспечения — это, конечно, часть инклюзивного дизайна. Некоторый софт невозможно обновить или его разработчики не хотят этого делать.

Расположение Скопировать ссылку

Многие неправильно размещают кнопку за пределами области (навигации). Это может привести к тому, что пользователи скринридеров, которые перемещаются по с помощью горячих клавиш, решат, что область пустая, что не особо им поможет. Со списком, скрытым от скринридеров, они просто столкнулись бы с этим:

Вот как мы можем переключить состояние:

var navButton = document.querySelector('nav button'); navButton.addEventListener('click', function() < let expanded = this.getAttribute('aria-expanded') === 'true' || false; this.setAttribute('aria-expanded', !expanded); let menu = this.nextElementSibling; menu.hidden = !menu.hidden; >); 

ARIA-controls Скопировать ссылку

Как я уже писал в «Aria-controls Is Poop», атрибут aria-controls , который помогает пользователям скринридеров при переходе от контролирующего элемента к контролируемому, поддерживается только в JAWS. Так что на него нельзя положиться.

Без хорошего метода перемещения между элементами, вам нужно убедиться в том, что одно из следующего верно:

  1. Первая ссылка раскрывающегося списка — следующая в порядке фокуса после кнопки (как в предыдущем примере кода).
  2. При раскрытии списка на первую ссылку сделан фокус.

В нашей ситуации я рекомендовал бы первый вариант. Это намного проще, так как не нужно беспокоиться о перемещении фокуса обратно на кнопку и о том, какие события для этого нужны. Кроме того, сейчас нет ничего, что могло бы предупредить пользователей о том, что фокус будет перемещён в другое место. В настоящих меню, которые мы вскоре обсудим, за это отвечает aria-haspopup=»true» .

Использование aria-controls на самом деле не приносит большого вреда, за исключением того, что делает объявления в скринридере более подробным. Однако некоторым пользователям JAWS это может быть нужно. Вот как будет использоваться атрибут вместе с id для списка:

Меню и роли menuitem Скопировать ссылку

Настоящее меню (с точки зрения WAI-ARIA) должно себя идентифицировать с помощью роли menu (для контейнера) и, обычно, роли menuitem для дочерних элементов (или других ролей для подобных элементов). Эти роли для родителей и детей работают сообща и предоставляют вспомогательным технологиям нужную информацию. Вот как можно расширить список, добавив для него семантику меню:

Поскольку наше навигационное меню начинает вести себя как «настоящее» меню, не должно ли тут быть ролей menuitem ?

Краткий ответ — нет. Более подробный ответ: нет, потому что наши элементы списка содержат ссылки, а элементы menuitem не могут иметь интерактивных потомков. То есть они являются контролами в меню.

Мы хотим, чтобы пользователи знали, что они используют ссылку и могут ожидать от неё поведения ссылки, так что пример выше не очень хороший. Как я уже сказал, настоящие меню предназначены для (написанных на JavaScript) приложений.

То, что у нас осталось, это своего рода гибридный компонент, который не совсем настоящее меню, но, по крайней мере, сообщает пользователям, открыт ли список ссылок, благодаря состоянию aria-expanded . Это подходящий паттерн для навигационных меню.

Примечание. Элемент Скопировать ссылку

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

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

Однако, так же как и с переключателем, основанном на чекбоксе, мы используем элемент, связанный со вводом данных, а не просто делаем выбор. Это может запутать многих пользователей, тем более, что этот шаблон использует JavaScript, чтобы выбранный элемент вёл себя как ссылка. Неожиданное изменение контекста, которое это вызывает, считается ошибкой согласно критерию 3.2.2 On Input (Level A).

Настоящие меню Скопировать ссылку

Теперь, когда мы обсудили ненастоящие меню и квази-меню, пришло время создать настоящее меню, которое открывается и закрывается настоящей кнопкой меню. С этого момента я буду называть вместе кнопку и меню — «кнопкой меню».

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

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

В этом примере мы представим, что наше приложение — это какая-то игра или викторина. Наша кнопка меню даёт пользователю выбрать уровень сложности. С учётом всей семантики меню выглядит следующим образом:

  

Примечания Скопировать ссылку

  • aria-haspopup просто указывает на то, у кнопки есть скрытое меню. Это работает как предупреждение о том, что при нажатии на кнопку пользователь будет перемещён в выпадающее меню (скоро мы рассмотрим поведение фокуса). Его значение не меняется: оно всегда true .
  • Элемент внутри кнопки содержит символ Юникод с маленьким чёрным перевёрнутым треугольником. Он визуально показывает, что нажатие на кнопку раскроет что-то под ней. Этого aria-haspopup не может показать. Атрибут aria-hidden=»true» не разрешает скринридерам объявлять «перевёрнутый треугольник» или что-то подобное. Благодаря aria-haspopup этого не нужно делать в невизуальном контексте.
  • aria-haspopup дополняет aria-expanded . Атрибут сообщает пользователю, находится ли он в данный момент в открытом (развёрнутом) меню или оно закрыто (свёрнуто), переключаясь между значениями true и false .
  • Само меню имеет (точно названную) роль menu . Для него нужны потомки с ролями menuitem . Они не обязательно должны быть прямыми потомками элемента menu . В этом примере так сделано для простоты.

Клавиатура и поведение при фокусе Скопировать ссылку

Когда дело доходит до того, чтобы сделать интерактивные контролы доступными для клавиатуры, лучшее, что вы можете сделать, это использовать правильные элементы. Поскольку здесь используются элементы , то мы можем быть уверены в том, что события по клику будут срабатывать при нажатии клавиш Enter и Space , как указано в HTMLButtonElement interface. Также это означает, что мы можем отключить пункты меню, используя связанное с кнопкой свойство disabled .

Есть намного больше способов взаимодействовать с кнопкой с клавиатуры. Вот краткий обзор поведения при фокусе с клавиатуры, которое мы будем реализовывать на основе WAI-ARIA Authoring Practices 1.1:

  • Enter , Space или ↓ на кнопке меню — открывает меню.
  • ↓ на пункте меню — перемещает фокус к следующему пункту меню или к первому, когда вы дошли до последнего пункта.
  • ↑ на пункте меню — перемещает фокус к предыдущему пункту меню или к последнему, если вы находитесь на первом.
  • ↑ на кнопке меню — закрывает меню, если оно открыто.
  • Esc на пункте меню — закрывает меню и перемещает фокус на кнопку меню.

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

Добавление tabindex=»-1″ к пунктам меню делает их недоступными для фокуса с помощью Tab , но сохраняет возможность фокуса на элементах при нажатии на клавиши со стрелками.

  

Метод open Скопировать ссылку

Мы можем создать методы для обработки различных событий как часть продуманного дизайна API.

Например, метод open нужен для переключения значения aria-expanded на true , изменить значение меню hidden на false и сделать фокус на первом элементе меню с menuitem , который не скрыт:

MenuButton.prototype.open = function ()

Мы можем исполнить этот метод, когда пользователь нажимает клавишу вниз на кнопке меню, на которой сделан фокус:

this.button.addEventListener('keydown', function (e) < if (e.keyCode === 40) < this.open(); >>.bind(this)); 

Кроме того, разработчик, использующий этот скрипт, сможет теперь программно открывать меню:

exampleMenuButton = new MenuButton( document.querySelector('[aria-haspopup]') ); exampleMenuButton.open(); 

Примечание. Хак с чекбоксом Скопировать ссылку

Если вам не нужен JavaScript, то лучше не использовать его настолько, насколько это возможно. Использование третьей технологии поверх HTML и CSS всегда усложняет систему и приводит к появлению в ней слабых мест. Однако не все компоненты можно создать без использования JavaScript.

В случае с кнопками меню желание сделать их «работающими без JavaScript» привело к появлению так называемого хака с чекбоксом. В нём состояние checked (или unchecked ) скрытого чекбокса используется для переключения видимости элемента меню с помощью CSS.

/* Меню закрыто */ [type="checkbox"] + [role="menu"] < display: none; >/* Меню открыто */ [type="checkbox"]:checked + [role="menu"]

Для пользователей скринридеров роль чекбокса и состояние checked бессмысленны в этом контексте. Это можно частично исправить, добавив role=»button» для чекбокса.

К сожалению, это отменяет взаимодействие со встроенным состоянием checked , лишая нас обратной связи о состоянии элемента без JavaScript (что плохо, хотя в этом контексте это было бы так же связано с состоянием checked ).

Но это возможно имитировать с помощью aria-expanded . Нам просто нужно добавить наш лейбл к двум элементам со , как показано ниже.

   

Оба этих элемента визуально скрыты благодаря классу visually-hidden , но, в зависимости от того в каком состоянии мы находимся, только один из них скрыт от скринридера. То есть только одному задано свойство display: none и это определяется установленным (но не объявляемым) состоянием checked :

/* Класс, который скрывает визуально элементы со */ .vh < position: absolute !important; clip: rect(1px, 1px, 1px, 1px); padding:0 !important; border:0 !important; height: 1px !important; width: 1px !important; overflow: hidden; >/* Отобразить правильное состояние для скринридеров с помощью текущего состояния элемента */ [type="checkbox"]:checked + label .expanded-text < display: inline; >[type="checkbox"]:checked + label .collapsed-text < display: none; >[type="checkbox"]:not(:checked) + label .expanded-text < display: none; >[type="checkbox"]:not(:checked) + label .collapsed-text

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

Такое поведение принято и предсказуемо, оно делает кнопку более удобной. Однако, если вам действительно нужно сделать кнопку меню без JavaScript, то это самый подходящий вариант. Учитывая то, что урезанная кнопка навигационного меню, которую я рассмотрел ранее, предлагает контент меню, который не зависит от самого JavaScript (то есть ссылки), этот подход может быть подходящим вариантом.

Примечание: меню открывает только пробел.

Событие choose Скопировать ссылку

Исполнение некоторых методов должно вызывать события, чтобы мы могли настроить обработчики событий. Например, мы можем транслировать событие choose , когда пользователь кликает по пункту меню. Мы можем установить это с помощью CustomEvent , которое даёт нам возможность передавать аргумент в свойство события detail . В этом случае аргумент ( choice ) будет узлом DOM выбранного пункта меню.

MenuButton.prototype.choose = function (choice) < // Определить событие 'choose' var chooseEvent = new CustomEvent('choose', < detail: < choice: choice >>); // Передать событие (Dispatch the event) this.button.dispatchEvent(chooseEvent); return this; > 

Есть много всего, что мы можем сделать с помощью этого механизма. Возможно, у нас есть live region с id со значением menuFeedback :

Теперь мы можем настроить обработчик событий и заполнить live region информацией, скрытой внутри события:

exampleMenuButton.addEventListener('choose', function (e) < // Получить текст узла (label) var choiceLabel = e.details.choice.textContent; // Получить узел live region var liveRegion = document.getElementById('menuFeedback'); // Заполнить live region liveRegion.textContent = `Your difficulty level is $`; >): 

При выборе пункта меню пользователь скринридера услышит: «Вы выбрали [название пункта меню]». Изменения контента live region (которому задан здесь атрибут role=»alert» ) объявляются скринридерами при каждом его обновлении. Live region не является обязательным, но это пример того, что может произойти в интерфейсе, когда пользователь сделал выбор в меню.

Сохранение выбора Скопировать ссылку

Не все пункты меню нужны для выбора сохранения настроек. Многие из них ведут себя как стандартные кнопки, которые при нажатии приводят к тому, что что-то происходит в интерфейсе. Однако, в случае с нашей кнопкой меню со сложностью, мы хотели бы указать текущую настройку сложности. То есть ту, которая выбрана последней.

Атрибут aria-checked=»true» работает для элементов, которым вместо menuitem задана роль menuitemradio . Расширенная разметка со вторым выбранным элементом (установленным) выглядит так:

  

В нативных меню на многих платформах выбранные элементы отмечаются с помощью галочек. Мы можем это без проблем сделать, используя чуть больше CSS:

[role="menuitemradio"][aria-checked="true"]::before

При перемещении по меню с запущенным скринридером при фокусе на этом выбранном элементе он объявит что-то вроде: «Галочка, средний, пункт меню, выбрано».

Поведение при открытии меню с выбранным menuitemradio немного отличается. Вместо того, чтобы сделать фокус на первом (включённом) элементе в меню, фокус устанавливается на выбранном элементе.

Какая польза от такого поведения? Пользователь (любой) помнит о своём предыдущем выборе. В меню с многочисленными параметрами (например, с масштабом), люди, работающие на клавиатуре, находятся в оптимальном положении для изменения настроек.

Использование кнопки меню с помощью скринридера Скопировать ссылку

В этом видео я покажу вам как использовать кнопку меню в VoiceOver и Chrome. В примере используются элементы с ролью menuitemradio , атрибутом aria-checked и обсуждается поведение кнопки при фокусе. Таким образом ведут себя и другие популярные скринридеры.

Расшифровка Скопировать ссылку

Хейдон: Это кнопка меню со сложностью и я собираюсь протестировать её на VoiceOver в Chrome. Для начала я сделаю фокус на самой кнопке.

VoiceOver: Сложность, всплывающая кнопка.

Хейдон: Сначала вы услышите «Сложность» — это подпись. Затем «всплывающая кнопка», что означает её состояние, что ей задано area-expanded=»false» и что она всплывающая, потому что для неё установлено значение true в атрибуте aria-haspopup . Сейчас я открою меню с помощью клавиши со стрелкой вниз.

VoiceOver: Галочка, очень сложно, пункт меню, выбран, меню, пять пунктов.

Хейдон: Здесь много информации. Для начала «Галочка, очень сложная». Это подпись. Я использую псевдоэлемент для того, чтобы добавить галочку. «Пункт меню», потому что в этом случае это пункт меню с ролью menuitemradio . «Выбран», потому что задан атрибут aria-checked со значением checked . И также вы слышите, что в меню пять пунктов. Это потому, что этот пункт меню вместе с другими находится внутри элемента, которому задана роль menu . Сейчас я нажму на кнопку со стрелкой вниз, чтобы сделать фокус на пункте «Очень высокая».

VoiceOver: Очень высокая, пункт меню.

Хейдон: На этот раз вы услышали только подпись и роль элемента, потому что он очевидно не выбран. Для того, чтобы выбрать этот пункт, я нажимаю кнопку Enter .

VoiceOver: Сложность, всплывающая кнопка.

Хейдон: Это закрывает меню и перемещает фокус на саму кнопку меню «Сложность». Итак, вы вернулись туда, откуда начали.

Инклюзивная кнопка меню на Github Скопировать ссылку

Я и Хьюго Жирадель вместе работали над созданием компонента кнопки меню с фичами API, которые я описал, и ещё многим другим. Вы должны поблагодарить Хьюго за многие из этих фич, так как они основывались на работе над a11y-dialog — доступным модальным окном. Он есть на Гитхабе и в npm.

npm i inclusive-menu-button --save 

Кроме того, Хьюго сделал специально для вас версию кнопки на React.

Чеклист Скопировать ссылку

  • Не используйте семантику ARIA для меню в случае с системами навигационных меню.
  • На сайтах с большим количеством контента не скрывайте структуру в выпадающих меню.
  • Используйте aria-expanded у кнопок для того, чтобы сообщить о том, что навигационное меню открыто или закрыто.
  • Убедитесь, что навигационное меню следующее в порядке фокуса после кнопки, которая его открывает и закрывает.
  • Никогда не жертвуйте юзабилити ради решений без JavaScript. Это заносчиво.

Промокоды Вкусно и точка на январь 2024

Установите мобильное приложение «Вкусно — и точка», перейдите на главный экран, кликните «Получить больше бонусов» в разделе «Мой бонус» и получите 50 бонусов на счет.

Промокод активен до 31 января 2024

Воспользуйтесь промокодом при оформлении любого заказа и получите в подарок 500 баллов, которые можно использовать для оплаты до 20% суммы следующего заказа (не более 500 рублей). Данный промокод могут использовать только новые пользователи (не делавшие заказы никогда ранее или не делавшие заказы последние 12 месяцев). Промокод активируется только при оформлении заказа через мобильное приложение.

Промокод активен до 21 февраля 2024

В Большой Комбо входит Биг Спешиал Острый Микс, картофель на выбор и напиток на выбор. Стоимость Комбо может меняться в зависимости от состава.

Промокод активен до 28 февраля 2024

Оформи абонемент на 14 или 30 дней можно в приложении «Вкусно — и точка». Подробная информация представлена на странице акции.

Промокод активен до 21 февраля 2024

Все специальные предложения представлены в разделе акции. Раздел постоянно обновляется.

Старые купоны Vkusnoitochka.ru

Промокод активен до 30 ноября 2023

Кэшбэк зачисляется на карту Альфа-Банка. Всего за период проведения акции можно получить до 500 рублей кэшбэка.

Промокод активен до 12 ноября 2023

В рамках предложения недели Наггетсы (4 шт) предоставляются по цене от 39 рублей (вместо 74 рублей).

Промокод активен до 26 ноября 2023

В рамках акции Биг Спешиал и Биг Спешиал Острый Микс предоставляются по выгодной цене при заказе двух одинаковых булочек.

Промокод активен до 24 января 2024

На странице акции можно собрать свой набор из детского меню по выгодной цене.

Промокод активен до 1 декабря 2023

Подарок предоставляется при заказе от 379 рублей. Для того, чтобы воспользоваться предложением, необходимо предъявить QR-код в терминале самообслуживания, на кассе или воспользоваться им в мобильном приложении при оформлении заказа. Подробную информацию можно уточнить на странице акции.

Промокод активен до 27 августа 2023

Предложение действует в фирменных ресторанах при покупке Большого Комбо.

Промокод активен до 21 ноября 2022

Заходите в приложение «Мой Tele2» и активируйте по 3 подарка от партнеров Tele2 каждый понедельник. В подарок от «Вкусно — и точка» можно получить промокоды на бесплатную продукцию: Капучино (0,2) или Американо (0,2); Чикенбургер или Наггетсы (4 шт).

Промокод активен до 30 октября 2022

В рамках акции Двойной Чизбургер или Чикен Хит предоставляется всего за 85 рублей. Предложение действует только в мобильном приложении «Вкусно — и точка».

Промокод активен до 18 сентября 2022

Получите уникальный QR-код в мобильном приложении «Вкусно — и точка» в разделе «Акции — Награды», отсканируйте данный QR-код на кассе, в киоске или в авто до оплаты, выберите акционный продукт и получите его по специальной цене.

Промокод активен до 4 сентября 2022

Скидка предоставляется при покупке двух гамбургеров. В акции принимают участие гамбургеры Гранд и Гранд Де Люкс.

Кратко об интернет-магазине Вкусно и точка

Любите бургеры, золотистую картошку фри или оригинальные десерты? А может быть, хотите быстро перекусить, но оказались в малознакомом районе? Загляните на официальный сайт сети «Вкусно и точка»: так вы сможете узнать о наличии нужных блюд, изучить меню и стоимость.

Vkusnoitochka.ru – официальный сайт российской сети. Это значит, что здесь всегда будет самая свежая информация о новостях и акциях, которые проводит «Вкусно и точка». Кроме знакомых блюд, вас ждут новые рецепты, разработанные с учетом потребительского спроса – легкие десерты, сочные бургеры и роллы.

О предложении интернет-магазина Вкусно и точка

Сеть «Вкусно и точка» – это любимые блюда для легкого завтрака, сытного обеда или пикника на природе. Здесь можно заказать:

  1. Бургеры и Роллы. Кроме классических гамбургеров и чизбургеров, в меню добавлены бургеры с тремя сырами, ароматной курочкой или рыбой.
  2. Картофель, стартеры и салаты. Закажите легкий салат «Цезарь» , креветки в хрустящей панировке или луковые кольца – пальчики оближете!
  3. Напитки и коктейли. В меню представлены молочные коктейли, сладкие газированные напитки, чай и кофе.

Недавно возобновил работу раздел «Кафе»: здесь можно полакомиться вкусным печеньем, чизкейками и другими десертами.

Как приобрести товары по скидке в интернет-магазине Вкусно и точка?

Любимые блюда кажутся еще вкуснее, если их можно заказать с хорошей скидкой. Сеть «Вкусно и точка» приготовила для своих поклонников выгодные предложения. Они собраны в разделе «Новинки и акции» главного меню.

Информация об акциях регулярно обновляется: старые предложения, которые стали неактуальными, удаляются, а новые – добавляются.

Например, сейчас действует специальная цена при заказе пары бургеров «Гранд» и «Гранд Де Люкс». Скидка составляет чуть более 10%. Срок действия предложения ограничен: акция продлится около месяца.

В сети «Вкусно и точка» действует бонусная программа: постоянные покупатели получают бонусы, которые могут потратить для оплаты части заказа в дальнейшем. Принцип начисления бонусов и порядок их списания остались неизменными. Количество бонусных баллов, которое будет начислено при заказе того или иного блюда, указано в описании каждой позиции.

Для участия в программе лояльности нужно установить фирменное мобильное приложение. На официальном сайте предусмотрена версия для iOS и Android. После загрузки приложения пройдите быструю регистрацию, и не забывайте авторизоваться каждый раз при оформлении заказа!

Помимо бонусных баллов, участие в программе лояльности сулит и другие преимущества. Например, ее участники могут получить напиток или блюдо бесплатно, если до этого уже заказывали его несколько раз. Информация о специальных предложениях для постоянных клиентов сети доступна в фирменном приложении.

Как активировать промокод в интернет-магазине Вкусно и точка?

Мы собрали для вас информацию обо всех акциях и промокодах, действующих в сети «Вкусно и точка»! Чтобы получить скидку в рамках акционного предложения, достаточно перейти по ссылке в описании. С промокодами немного сложнее, хотя разобраться сможет каждый.

Промо-код – специальный секретный код, состоящий из разных символов: букв, цифр, букв и цифр. Они могут образовывать какое-то слово, или располагаться в произвольном порядке. Введите эти символы при оформлении заказа – получите скидку!

Рекомендуем использовать следующий алгоритм:

  1. Изучите описания доступных промокодов. Выясните, подходят ли вам условия получения скидки: она может распространяться не на весь ассортимент, а только на какие-то отдельные блюда.
  2. Если условия устраивают, скопируйте символы промокода. В описании есть виртуальная кнопка – просто нажмите ее.
  3. Перейдите на сайт «Вкусно и точка» или откройте фирменное мобильное приложение. Для активации промокода нужно пройти регистрацию.
  4. Добавьте в Корзину блюда, которые планируете заказать. Когда Корзина будет сформирована, зайдите в нее: внутри будет находиться специальное поле для введения промокода.
  5. Вставьте символы, которые скопировали ранее. Если все получилось, сумма заказа уменьшится.

Промокод не сработал? Проверьте еще раз правильность выполнения каждого шага: изучите условия активации, скопируйте символы с соблюдением регистра и раскладки клавиатуры, вставьте код в пустое поле. Иногда достаточно повторить попытку, и все выйдет!

Как оформить заказ в интернет-магазине Вкусно и точка?

Для оформления заказа нужно зарегистрироваться или авторизоваться. Сделать это можно с помощью фирменного мобильного приложения, или через официальный сайт. Далее останется добавить в Корзину интересующие товары и подтвердить заказ, не забыв про промокод.

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

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

Реклама. Информация о рекламодателе по ссылке в карточке акции.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *