Nous allons les garder simple, allons-nous. Tout d'abord, à l'aide du pur HTML + CSS:
<div id="emotion">
<input type="radio" name="emotion" id="sad" />
<label for="sad"><img src="sad_image.png" alt="I'm sad" /></label>
<input type="radio" name="emotion" id="happy" />
<label for="happy"><img src="happy_image.png" alt="I'm happy" /></label>
</div>
Cela va dégrader gentiment si il n'y a pas de JavaScript. Utiliser id
et for
attributs de lier l'étiquette et radiobutton de sorte que lorsque l'image est sélectionnée, le bouton radio correspondant sera rempli. Ceci est important parce que nous allons avoir besoin de cacher la véritable radiobutton à l'aide de JavaScript. Maintenant, pour certains, jQuery bonté. Tout d'abord, la création du CSS nous aurons besoin de:
.input_hidden {
position: absolute;
left: -9999px;
}
.selected {
background-color: #ccc;
}
#emotion label {
display: inline-block;
cursor: pointer;
}
#emotion label img {
padding: 3px;
}
Maintenant pour le JavaScript:
$('#emotion input:radio').addClass('input_hidden');
$('#emotion label').click(function(){
$(this).addClass('selected').siblings().removeClass('selected');
});
La raison pour laquelle nous ne sommes pas à l'aide de display: none
ici pour des raisons d'accessibilité. Voir: http://www.jsfiddle.net/yijiang/Zgh24/1 pour une démo, avec quelque chose de plus de fantaisie.