Когда использовать ссылку a, а когда кнопку button?
Ссылки и навигация
Ссылка ведёт куда-то (меняет адрес или переходит к якорю), кнопка выполняет действие на текущей странице.
- Перейти на другую страницу или раздел —
<a href> - Скачать файл —
<a href download> - Отправить форму, открыть модалку, переключить вкладку —
<button>
Почему это важно
- Ссылку можно открыть в новой вкладке, скопировать адрес, на неё реагируют поисковики.
- Кнопка из коробки получает фокус, срабатывает на Enter и Space и объявляется скринридером как кнопка.
<div onclick>ничего из этого не умеет и требует ручныхrole,tabindexи обработчиков клавиатуры.
<a href="/pricing">Тарифы</a>
<button type="button" aria-expanded="false" aria-controls="menu">Меню</button>Типичная ошибка: <a href="#" onclick="..."> для действий. Если действие не навигация, берите <button type="button">.
Коротко для собеседования
Ссылка ведёт куда-то, кнопка выполняет действие на странице. Для действий используйте <button type="button">, а не <a href="#">.