Exemple
Exemple pris sur le site : http://www.cssplay.co.uk/menu/cssplay-tutorial-form.html
But : améliorer l'affichage des cases à cocher et des boutons radio.
Principe : afficher un bouton OUI et NON avec un cache qui cachera le OUI quand le choix est dé-sélectionné et cachera le NON quand le choix est sélectionné.
Astuce : créer un cache mobile qui cachera soit le OUI soit le NON. Il faut que les 2 éléments, le cache et le bouton, soient parfaitement positionnés donc il faut utiliser un positionnement absolu ; mais ce doit fonctionner pour chaque choix donc il faut un positionnement absolu avec chaque choix ! Les choix doivent donc être eux aussi positionnés avec un positionnement relatif par rapport à la marge de gauche.
Au départ, une case à cocher normale :
div id="deux"
input type="checkbox" id="deux_bis" name="deux_bis"
label for="deux_bis"
Vous êtes sur ?/label
/div
On positionne le label à 120 px de la gauche :
#deux {position:relative; }
#deux label {margin-left:120px;}
On affiche le bouton OUI / NON devant grâce à BEFORE
#deux {position:relative; }
#deux label {margin-left:120px;}
#deux label:before {content:"Oui Non"; width:100px; height:40px; position:absolute; left:0; top:0; }
On affiche le cache en utilisant le pseudo élément AFTER + transition lors du passage du cache entre OUI et NON
#deux label:after {content:""; width:51px; height:40px; position:absolute; left:54px; top:5px; transition:0.5s;}
Et pour finir, on définit la seconde position du cache : LEFT=5px cache le OUI, LEFT=54px cache le NON
#deux #deux_bis:checked ~ label:after {left:54px;}
.mess {margin-right : 30%}
aside { position: relative ; right: 0% ; width: 20% ; border: medium ridge ; background-color: khaki}
aside p {padding: 1rem}
[class^="message"]::before , [class^="message"]::after { content:'' ; position:absolute ; top:-1rem ; left:-1rem ; height:3rem ; width:3rem ; }
[class^="message"]::before { background-color: #F2F0E4 ; border:thin solid ; border-radius:50% }
[class^="message"]::after { background-image:url(images/paperclip.777.svg) ; background-repeat:no-repeat ; background-size:1.8rem 1.8rem ; background-position:.7rem .7rem }