¿Es posible aplicar un estilo css (3) a la etiqueta de un botón de radio marcado?
Tengo el siguiente marcado:
<input type="radio" id="rad" name="radio"/>
<label for="rad">A Label</label>
Lo que esperaba es que
label:checked { font-weight: bold; }
haría algo, pero lamentablemente no lo hace (como esperaba).
¿Hay un selector que pueda lograr este tipo de funcionalidad? Puede rodear con divs, etc. si eso ayuda, pero la mejor solución sería una que use la etiqueta '' para '' atributo.
Cabe señalar que puedo especificar navegadores para mi aplicación, por lo tanto, lo mejor de su clase css3, etc.
<label for="rad1">Radio 1</label><input id="rad1" type="radio" name="rad">
~
para seleccionar elementos hermanos que no sean necesariamente adyacentes. css-tricks.com/child-and-sibling-selectors:checked
selector no es compatible .Sé que esta es una vieja pregunta, pero si desea que
<input>
sea un hijo en<label>
lugar de separarlos, aquí hay una forma pura de CSS que podría lograr:Luego simplemente envuelva el texto con un
<span>
:Véalo en JSFiddle .
fuente
<label>@Html.RadioButtonFor(..) someText<label>
, arrojé<span>
"someText" y funcionó de maravilla. ¡Gracias!label:active { font-weight: bold; }
. Ver: jsfiddle.net/Gbq8Z/608 (wow, no puedo creer que el violín haya sido bifurcado 608 veces).Olvidé dónde lo vi por primera vez, pero en realidad puedes incrustar tus etiquetas en un contenedor en otro lugar siempre que tengas el
for=
atributo establecido. Entonces, veamos una muestra en SO:Uf. Eso fue mucho para una "muestra", pero creo que realmente lleva a casa el efecto y el punto: ciertamente podemos seleccionar una etiqueta para un control de entrada verificado sin que sea un hermano. El secreto radica en mantener las
input
etiquetas de un niño solo para lo que necesitan ser (en este caso, solo elbody
elemento) .Como el
label
elemento en realidad no utiliza el:checked
pseudo selector, no importa que las etiquetas estén almacenadas en elheader
. Tiene el beneficio adicional de que, dado queheader
es un elemento hermano, podemos usar el~
selector de hermanos genérico para pasar delinput[type=radio]:checked
elemento DOM alheader
contenedor y luego usar los selectores descendientes / hijos para acceder a loslabel
mismos, lo que permite la posibilidad de diseñarlos cuando Se seleccionan las respectivas casillas de radio / casillas de verificación .No solo podemos diseñar las etiquetas, sino también diseñar otro contenido que pueda ser descendiente de un contenedor hermano en relación con todos los
input
s. Y ahora, por el momento que todos han estado esperando, ¡el JSFIDDLE ! Ve allí, juega con él, haz que funcione para ti, descubre por qué funciona, rómpelo, ¡haz lo que haces!Esperemos que todo tenga sentido y responda completamente la pregunta y posiblemente cualquier seguimiento que pueda surgir.
fuente
Si su entrada es un elemento secundario de
label
y tiene más de una etiqueta, puede combinar el truco de @ Mike conFlexbox
+order
.html css
Véalo en JSFiddle .
nota: el selector de hermanos solo funciona dentro del mismo padre. Para evitar esto, puede hacer que la entrada se oculte en el nivel superior utilizando el truco @Nathan Blair .
fuente
Podrías usar un poco de jQuery:
Debería asegurarse de que sus botones de radio marcados también tengan la clase correcta en la carga de la página.
fuente
$('label[for="' + $(this).attr('id') + '"]').toggleClass();
ACTUALIZAR:
Esto solo funcionó para mí porque nuestro html generado existente era extraño, generaba
label
s junto conradio
s y les daba a amboschecked
atributos.¡No importa, y grandes beneficios para Brilliand por mencionarlo!
Si su etiqueta es un hermano de una casilla de verificación (que suele ser el caso), puede usar el
~
selector de hermanos y unlabel[for=your_checkbox_id]
para abordarlo ... o asignarle una identificación a la etiqueta si tiene varias etiquetas (como en este ejemplo donde yo usar etiquetas para botones)Vine aquí buscando lo mismo, pero terminé encontrando mi respuesta en los documentos .
Un
label
elemento conchecked
atributo puede seleccionarse así:Sé que es una vieja pregunta, pero tal vez ayude a alguien por ahí :)
fuente