28172 sujets

CSS et mise en forme, CSS3

Bonjour.

Je bute contre un problème qui parait pourtant pas compliqué :
J'ai un tableau full css (display: table, table-row et table-cell) dont la première cellule de chaque ligne contient un checkbox.
Je voudrais que lorsqu'on coche une checkbox le reste de la ligne change de couleur (par exemple).

Voici mon code :

.mcellule
{
	display: table-cell;
	border-bottom: solid 1px #FFFFFF;
	vertical-align: middle;
	padding: 2px;
}

.mcellule:first-child input[type="checkbox"]:checked ~ .mcellule
{
	background-color: red;
}


Et ça marche pas...
Ce qui m'étonne le plus, c'est que ça ça marche :

.mcellule
{
	display: table-cell;
	border-bottom: solid 1px #FFFFFF;
	vertical-align: middle;
	padding: 2px;
}

.mcellule:first-child ~ .mcellule
{
	background-color: red;
}


Quand je dis que ça marche, je veux dire que toutes les cellules qui suivent la première sont bien rouges.
Alors qu'est-ce qui coince quand j'ajoute la checkbox ?

Merci d'avance
Modérateur
Bonjour,
Essaye d'enlever le sélecteur first-child si possible (si tu as bien qu'un seul input checkbox sur ta ligne).
Je ne l'ai pas essayé tout de suite mais je pense déjà avoir eu le soucis en utilisant 2 sélecteur avec double points.
.mcellule input[type="checkbox"]:checked ~ .mcellule{
Background-color: red;
}
Je suppose que ta classe "mcellule" est celle d'une case de ton tableau et que ton <input> est à l'intérieur de celle-ci, tu comprendras donc que par conséquent tu ne peux pas cibler les autres cases de ton tableau selon que ton input est coché ou pas car "~" est un sélecteur d'adjacence.
Tu devras passer par JS pour ça ou établir ta structure HTML différemment.
Merci pour vos réponses.

J'aurais bien aimé me passer de JavaScript, mais bon, comme c'est pas quelque chose d'essentiel dans ce site, je vais faire une petite exception.