O <a>elemento nchor é simplesmente uma âncora para ou de algum conteúdo. Originalmente, a especificação HTML permitia âncoras nomeadas ( <a name="foo">) e âncoras vinculadas ( <a href="#foo">).
O formato âncora nomeado é menos usado, pois o identificador de fragmento agora é usado para especificar um [id]atributo (embora para compatibilidade com versões anteriores você ainda possa especificar [name]atributos). Um <a>elemento sem um [href]atributo ainda é válido .
No que diz respeito à semântica e estilo, o <a>elemento não é um link ( :link), a menos que tenha um [href]atributo. Um efeito colateral disso é que um <a>elemento sem [href]não estará na ordem de tabulação por padrão.
A verdadeira questão é se o <a>elemento sozinho é uma representação apropriada de a <button>. Em um nível semântico, há uma diferença distinta entre a linke a button.
Um botão é algo que quando clicado faz com que uma ação ocorra.
Um link é um botão que causa uma alteração na navegação no documento atual. A navegação que ocorre pode ser movida dentro do documento no caso de identificadores de fragmento ( #foo) ou movida para um novo documento no caso de URLs ( /bar).
Como os links são um tipo especial de botão, eles geralmente tiveram suas ações substituídas para executar funções alternativas. Continuar usando uma âncora como botão é aceitável do ponto de vista da consistência, embora não seja muito preciso semanticamente.
Se você estiver preocupado com a semântica e acessibilidade do uso de um <a>elemento (ou <span>, ou <div>) como um botão, adicione os seguintes atributos:
<a role="button" tabindex="0" ...>...</a>
A função do botão informa ao usuário que o elemento específico está sendo tratado como um botão como uma substituição para qualquer semântica que o elemento subjacente possa ter.
Para <span>e <div>elementos, convém adicionar ouvintes de chave JavaScript Spaceou Enteracionar o clickevento. <a href>e <button>elementos fazem isso por padrão, mas elementos que não são botões não. Às vezes, faz mais sentido vincular o clickgatilho a uma chave diferente. Por exemplo, um botão "ajuda" em um aplicativo Web pode estar vinculado F1.