Добрый вечер. При просмотре кода других сайтов часто замечаю что в качестве кнопок используются div и span.
Возник вопрос зачем это делается и чем хуже тот же button или a? Есть какие то преимущества у такого способа?
Делают, если:
1. Не знают что лучше использовать button или a
2. Не знают/лень убирать фон, рамки и прочие прелести у button
3. У a не знают/лень убрать действие по умолчанию с помощью preventDefault (при клике кидает на верх страницы, пытаясь перейти по ссылке)
4. Еще варианты... =)
Вообще лучше пользоваться button - это лучше с точки зрения доступности страницы. Разные скринридеры для слабовидящих опираются на разметку при чтении. Ну и вообще, если есть в спецификации кнопка и ссылка, то и нужно их использовать по назначению. Используют div вместо кнопки в некоторых случаях, когда не хотят или не умеют бороться с ненужными в конкретном случае особенностями рендеринга элемента button.
Можно вообще для группировки и для строк использовать только div и span
То есть обойтись минимумом тегов.
А для обозначения семантики (роли) использовать WAI-ARIA
смотри тут