206 votes

Comment faire en sorte qu'un lien html ressemble à un bouton ?

J'utilise ASP.NET, certains de mes boutons ne font que des redirections. Je préférerais qu'ils soient des liens ordinaires, mais je ne veux pas que mes utilisateurs remarquent une grande différence dans l'apparence. J'ai pensé à des images enveloppées par des ancres, c'est-à-dire des balises, mais je ne veux pas avoir à lancer un éditeur d'images chaque fois que je change le texte d'un bouton.

2 votes

Voir la réponse que j'ai acceptée pour cette question : stackoverflow.com/questions/547222/

0 votes

Vous pouvez utiliser un service tel que celui-ci pour générer le CSS pour vous après avoir configuré quelques aspects (couleur, taille, police).

1 votes

Je répondrais bien comment le faire avec javascript mais la question n'a pas de balise "javascript".

261voto

TStamper Points 17163

Appliquez-lui cette classe

.button {
  font: bold 11px Arial;
  text-decoration: none;
  background-color: #EEEEEE;
  color: #333333;
  padding: 2px 6px 2px 6px;
  border-top: 1px solid #CCCCCC;
  border-right: 1px solid #333333;
  border-bottom: 1px solid #333333;
  border-left: 1px solid #CCCCCC;
}

<a href="#" class="button">Example</a>

20 votes

Le problème est qu'il faut reproduire l'apparence d'un bouton avec CSS. Malheureusement, l'aspect des boutons varie selon les navigateurs et les versions de ces derniers. Il faut donc soit accepter que le bouton ait un aspect bizarre dans certains navigateurs, soit avoir un tas de code pour déterminer le navigateur et la version de l'utilisateur et choisir un style différent. Ce qui pose beaucoup de problèmes et peut se briser à la prochaine version d'un navigateur.

0 votes

Cela ne fonctionne pour moi que si je l'applique à a directement ( a {display: block ...} ), ce qui n'est pas acceptable. Avez-vous une idée de la raison pour laquelle class attribut à l'intérieur a ne fonctionne pas ? :( J'utilise Firefox 27. J'ai également essayé a.button {...} et ça ne marche pas non plus.

1 votes

@Jay, un compromis pourrait consister à définir le style de l'élément d'information. <input type="submit"> et/ou <button> afin qu'ils n'utilisent pas les valeurs par défaut du navigateur (dans la mesure du possible), puis de les faire correspondre avec le style de l'élément .button comme ci-dessus. Cela devrait permettre de réduire les différences, voire de les supprimer complètement, et c'est mieux que votre méthode (peu fiable - comme vous le dites à juste titre) consistant à renifler le type et la version du navigateur.

172voto

guanome Points 2617

Pourquoi ne pas simplement enrouler une balise d'ancrage autour d'un élément de type bouton ?

<a href="somepage.html"><button type="button">Text of Some Page</button></a>

Cela fonctionnera pour IE9+, Chrome, Safari, Firefox, et probablement Opera.

9 votes

@Dean_Wilson essayez d'avoir à vous adapter à ie6 :(

0 votes

@feeel Parce que c'était plus facile pour moi d'obtenir un bouton à l'aspect cohérent. Si vous utilisez le CSS, il n'aura pas de style natif. Quelqu'un d'autre a déjà répondu à cette question de toute façon.

1 votes

J'aime cette solution, car il n'est pas nécessaire de tripoter les CSS pour essayer d'imiter le style de bouton du navigateur natif. Cependant, dans Firefox, je n'ai réussi à la faire fonctionner qu'avec les éléments suivants <button type="button"> . Sans l'attribut de type, il y aurait toujours un retour en arrière et le lien serait ignoré.

45voto

Raul Luna Points 170

IMHO, il existe une solution meilleure et plus élégante. Si votre lien est celui-ci :

<a href="http://www.example.com">Click me!!!</a>

Le bouton correspondant devrait être le suivant :

<form method="GET" action="http://www.example.com">
<input type="submit" value="Click me!!!">
</form>

Cette approche est plus simple car elle utilise de simples éléments html, elle fonctionnera donc dans tous les navigateurs sans rien changer. De plus, si vous avez des styles pour vos boutons, cette solution appliquera gratuitement ces mêmes styles à votre nouveau bouton.

6 votes

Bon, j'ai testé cela aujourd'hui et cela fonctionne très bien si vous n'utilisez pas ASP.NET webforms. ASP.NET webforms enveloppe la page entière dans une balise de formulaire et les formulaires imbriqués ne semblent pas fonctionner du tout - cela fonctionne en dehors de la balise de formulaire ASP.NET, mais cela limite l'utilisation aux liens en haut et en bas de page.

4 votes

Simple et efficace. Vous pourriez vouloir ajouter le style display:inline à l'élément de formulaire. Sinon, il est traité comme un bloc, ce qui est différent des boutons, ancres et entrées.

0 votes

Bonne question. Je ne le pense pas non plus. Mais d'autres solutions décrites ici ne fonctionneront pas avec googlebot, par exemple celles qui consistent à utiliser une balise de bouton.

28voto

rupsray Points 91

Si vous voulez un joli bouton avec des coins arrondis, utilisez cette classe :

.link_button {
    -webkit-border-radius: 4px;
    -moz-border-radius: 4px;
    border-radius: 4px;
    border: solid 1px #20538D;
    text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.4);
    -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.4), 0 1px 1px rgba(0, 0, 0, 0.2);
    -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.4), 0 1px 1px rgba(0, 0, 0, 0.2);
    box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.4), 0 1px 1px rgba(0, 0, 0, 0.2);
    background: #4479BA;
    color: #FFF;
    padding: 8px 12px;
    text-decoration: none;
}

<a href="#" class="link_button">Example</a>

3 votes

J'ai ajouté ceci et la réponse de rang le plus élevé à un jsFiddle. N'hésitez pas à vous amuser avec jsfiddle.net/5z6ew1m0/6

0 votes

Vous pouvez ajouter un margin à elle aussi. Sinon, bon travail de style.

23voto

Ólafur Waage Points 40104
a {
    display: block;
    height: 20px;
    width: auto;
    border: 1px solid #000;
}

Vous pouvez jouer avec <a> comme ceci si vous leur donnez un affichage en bloc. Vous pouvez ajuster la bordure pour donner un effet d'ombre et la couleur d'arrière-plan pour donner l'impression d'un bouton :)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X