J'ai une liste de cases à cocher dans un tableau. (une parmi un certain nombre de CB sur la ligne)
<tr><td><input type="checkbox" class="custom_image" value="1" id="CB1" /><label for='CB1'> </label></td></tr>
<tr><td><input type="checkbox" class="custom_image" value="2" id="CB2" /><label for='CB2'> </label></td></tr>
<tr><td><input type="checkbox" class="custom_image" value="3" id="CB3" /><label for='CB3'> </label></td></tr>
<tr><td><input type="checkbox" class="custom_image" value="4" id="CB4" /><label for='CB4'> </label></td></tr>
J'aimerais remplacer l'image de la case à cocher par une paire d'images on/off personnalisées et je me demandais si quelqu'un avait une meilleure compréhension de la façon de faire cela avec CSS ?
J'ai trouvé ce tutoriel "CSS ninja", mais je dois admettre que je le trouve un peu complexe pour moi. http://www.thecssninja.com/css/custom-inputs-using-css
D'après ce que je sais, vous êtes autorisé à utiliser une pseudo classe
td:not(#foo) > input[type=checkbox] + label
{
background: url('/images/off.png') 0 0px no-repeat;
height: 16px;
padding: 0 0 0 0px;
}
Je pensais qu'en ajoutant la feuille de style CSS ci-dessus, la case à cocher afficherait au moins par défaut l'image à l'état OFF, puis j'ajouterais ce qui suit pour obtenir l'état ON.
td:not(#foo) > input[type=checkbox]:checked + label {
background: url('/images/on.png') 0 0px no-repeat;
}
Malheureusement, il semble que je manque une étape critique quelque part. J'ai essayé d'utiliser la syntaxe de sélecteur CSS3 personnalisée pour correspondre à ma configuration actuelle, mais il doit me manquer quelque chose (les images sont de taille 16x16 si cela a de l'importance).
http://www.w3.org/TR/css3-selectors/#checked
EDIT : J'avais manqué quelque chose dans le tutoriel où il applique le changement d'image à l'étiquette et non à l'entrée elle-même. Je n'obtiens toujours pas l'image permutée attendue pour le résultat de la case à cocher sur la page, mais je pense que je m'en approche.
0 votes
Il existe un plugin jQuery appelé Uniforme qui fait un très bon travail à cet égard.
0 votes
Malheureusement, nous utilisons un prototype et je ne peux pas changer cela (les effets secondaires seraient paralysants). Je chercherais bien un plugin prototype (formulaires fantaisistes) ... mais une partie de mon objectif "personnel" est de le faire fonctionner en utilisant la méthode non-js. Je sais que c'est possible (voir le tutoriel). se sentir comme si j'en étais proche... et je pense que savoir comment le faire améliorerait ma capacité à travailler sur de futures tâches similaires. Évidemment, si c'est impossible, j'abandonnerai et passerai à un truc JS quelconque.
1 votes
Attendez - "Pure CSS" comme dans CSS sans images ou CSS sans Javascript ?
0 votes
Oh - je voulais dire "semi pure" je suis définitivement en train d'utiliser des images pour le moment, mais je suppose qu'il serait possible d'utiliser une balise "data / mime" pour mettre l'image dans le CSS. (J'ai vu un article sur ce sujet récemment, mais l'emplacement exact m'échappe pour le moment).
0 votes
Vous pourriez probablement utiliser un dégradé css avec une bordure, avec un span à l'intérieur de l'étiquette également stylisé avec CSS. IMHO, on s'en fiche, l'image fonctionne bien. #crazycss
0 votes
Wow, je ne peux pas croire que je n'ai jamais entendu parler d'Uniform avant - c'est génial. Merci.
3 votes
Attendez, "Pure CSS" comme dans CSS avec javascript et/ou des noeuds dom supplémentaires ?