É possível aplicar um estilo css (3) a um rótulo de um botão de opção marcado?
Eu tenho a seguinte marcação:
<input type="radio" id="rad" name="radio"/>
<label for="rad">A Label</label>
O que eu estava esperando é que
label:checked { font-weight: bold; }
faria algo, mas infelizmente não faz (como eu esperava).
Existe um seletor que pode atingir esse tipo de funcionalidade? Você pode cercar divs, etc., se isso ajudar, mas a melhor solução seria aquela que usa o atributo label '' for ''.
Note-se que eu sou capaz de especificar navegadores para o meu aplicativo, então o melhor da classe css3 etc, por favor.
<label for="rad1">Radio 1</label><input id="rad1" type="radio" name="rad">
~
para selecionar elementos irmãos que não são necessariamente adjacentes. css-tricks.com/child-and-sibling-selectors:checked
seletor não é suportado .Sei que essa é uma pergunta antiga, mas se você gostaria de ter
<input>
filhos em<label>
vez de separá-los, aqui está uma maneira pura de CSS que você pode fazer:Em seguida, envolva o texto com um
<span>
:Veja no JSFiddle .
fonte
<label>@Html.RadioButtonFor(..) someText<label>
, joguei<span>
"someText" e funcionou como um encanto. Obrigado!label:active { font-weight: bold; }
. Veja: jsfiddle.net/Gbq8Z/608 (uau, não acredito que o violino tenha sido bifurcado 608 vezes).Eu esqueço onde vi pela primeira vez mencionado, mas é possível incorporar seus rótulos em um contêiner em outro lugar, desde que você tenha o
for=
conjunto de atributos. Então, vamos verificar uma amostra no SO:Ufa. Isso foi demais para uma "amostra", mas eu sinto que realmente leva a efeito e ponto: certamente podemos selecionar um rótulo para um controle de entrada verificado sem que seja um irmão. O segredo está em manter as
input
tags de uma criança apenas no que elas precisam ser (neste caso - apenas nobody
elemento) .Como o
label
elemento não utiliza o:checked
pseudo-seletor, não importa que os rótulos estejam armazenados noheader
. Ele tem o benefício adicional de que, comoheader
é um elemento irmão, podemos usar o~
seletor genérico de irmão para mover doinput[type=radio]:checked
elemento DOM para oheader
contêiner e, em seguida, usar seletores descendentes / filhos para acessar oslabel
próprios, permitindo a capacidade de estilizá-los quando seus as respectivas caixas de seleção / rádio estão marcadas .Não apenas podemos estilizar os rótulos, mas também estilizar outro conteúdo que possa ser descendente de um contêiner irmão em relação a todos os
input
s. E agora, no momento em que todos esperavam, o JSFIDDLE ! Vá lá, brinque com ele, faça funcionar para você, descubra por que funciona, quebre, faça o que você faz!Espero que tudo faça sentido e responda totalmente à pergunta e, possivelmente, qualquer acompanhamento que possa surgir.
fonte
Se sua entrada for um elemento filho do
label
e você tiver mais de um rótulo, poderá combinar o truque de @ Mike comFlexbox
+order
.html css
Veja no JSFiddle .
Nota: O seletor de irmãos funciona apenas no mesmo pai. Para contornar isso, você pode ocultar a entrada no nível superior usando o @Nathan Blair hack.
fonte
Você poderia usar um pouco de jQuery:
Você precisaria garantir que os botões de opção marcados também tenham a classe correta no carregamento da página.
fonte
$('label[for="' + $(this).attr('id') + '"]').toggleClass();
ATUALIZAR:
Isso só funcionou para mim porque nosso html gerado existente era maluco, gerando
label
s junto comradio
s e fornecendo a amboschecked
atributo.Não importa, e grandes ups para Brilliand por trazê-lo à tona!
Se seu rótulo é um irmão de uma caixa de seleção (que geralmente é o caso), você pode usar o
~
seletor de irmãos e umlabel[for=your_checkbox_id]
para endereçá-lo ... ou atribuir um ID ao rótulo se você tiver vários rótulos (como neste exemplo, onde eu use etiquetas para botões)Vim aqui procurando o mesmo - mas acabei encontrando minha resposta nos documentos .
um
label
elemento comchecked
atributo pode ser selecionado da seguinte forma:Eu sei que é uma pergunta antiga, mas talvez ajude alguém lá fora :)
fonte