O código da resposta aceita funciona na maioria dos casos, mas para obter um botão que realmente se comporta como um link, você precisa de um pouco mais de código. É especialmente difícil obter o estilo dos botões focados diretamente no Firefox (Mozilla).
O CSS a seguir garante que âncoras e botões tenham as mesmas propriedades de CSS e se comportem da mesma maneira em todos os navegadores comuns:
button {
align-items: normal;
background-color: rgba(0,0,0,0);
border-color: rgb(0, 0, 238);
border-style: none;
box-sizing: content-box;
color: rgb(0, 0, 238);
cursor: pointer;
display: inline;
font: inherit;
height: auto;
padding: 0;
perspective-origin: 0 0;
text-align: start;
text-decoration: underline;
transform-origin: 0 0;
width: auto;
-moz-appearance: none;
-webkit-logical-height: 1em; /* Chrome ignores auto, so we have to use this hack to set the correct height */
-webkit-logical-width: auto; /* Chrome ignores auto, but here for completeness */
}
/* Mozilla uses a pseudo-element to show focus on buttons, */
/* but anchors are highlighted via the focus pseudo-class. */
@supports (-moz-appearance:none) { /* Mozilla-only */
button::-moz-focus-inner { /* reset any predefined properties */
border: none;
padding: 0;
}
button:focus { /* add outline to focus pseudo-class */
outline-style: dotted;
outline-width: 1px;
}
}
O exemplo acima modifica apenas button
elementos para melhorar a legibilidade, mas pode ser facilmente estendido para modificação input[type="button"], input[type="submit"]
e input[type="reset"]
elementos também. Você também pode usar uma classe, se quiser que apenas alguns botões pareçam âncoras.
Veja este JSFiddle para uma demonstração ao vivo.
Observe também que isso aplica o estilo de âncora padrão aos botões (por exemplo, cor do texto azul). Portanto, se você quiser alterar a cor do texto ou qualquer outra coisa de âncoras e botões, faça isso após o CSS acima.
O código original (veja o snippet) nesta resposta era completamente diferente e incompleto.
/* Obsolete code! Please use the code of the updated answer. */
input[type="button"], input[type="button"]:focus, input[type="button"]:active,
button, button:focus, button:active {
/* Remove all decorations to look like normal text */
background: none;
border: none;
display: inline;
font: inherit;
margin: 0;
padding: 0;
outline: none;
outline-offset: 0;
/* Additional styles to look like a link */
color: blue;
cursor: pointer;
text-decoration: underline;
}
/* Remove extra space inside buttons in Firefox */
input[type="button"]::-moz-focus-inner,
button::-moz-focus-inner {
border: none;
padding: 0;
}