La bonne méthode sémantique consisterait à utiliser une case à cocher, puis à lui donner un style différent selon qu'elle est cochée ou non. Mais il n'y a pas de bonnes façons de le faire. Il faut ajouter des span supplémentaires, des div supplémentaires et, pour un look vraiment sympa, ajouter du javascript.
La meilleure solution consiste donc à utiliser une petite fonction jQuery et deux images d'arrière-plan pour styliser les deux statuts différents du bouton. Exemple avec un effet haut/bas donné par des bordures :
$(document).ready(function() {
$('a#button').click(function() {
$(this).toggleClass("down");
});
});
a {
background: #ccc;
cursor: pointer;
border-top: solid 2px #eaeaea;
border-left: solid 2px #eaeaea;
border-bottom: solid 2px #777;
border-right: solid 2px #777;
padding: 5px 5px;
}
a.down {
background: #bbb;
border-top: solid 2px #777;
border-left: solid 2px #777;
border-bottom: solid 2px #eaeaea;
border-right: solid 2px #eaeaea;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<a id="button" title="button">Press Me</a>
Évidemment, vous pouvez ajouter des images d'arrière-plan qui représentent le bouton haut et le bouton bas, et rendre la couleur d'arrière-plan transparente.
0 votes
J'ai écrit un tutoriel sur la façon de créer des interrupteurs marche/arrêt avec CSS3 uniquement, sans JS. Vous pouvez voir ici la démo
0 votes
Voici un tutoriel sur Comment créer un plugin JQuery pour convertir les boutons radio en boutons à bascule ? y Vous pouvez voir ici la démo