Quero criar um botão de alternância em html usando css. Eu quero que quando você clicar nele, ele permaneça empurrado para dentro e quando você clicar nele novamente, ele saia.
Se não houver maneira de fazer isso apenas usando css. Existe uma maneira de fazer isso usando jQuery?
Respostas:
A boa maneira semântica seria usar uma caixa de seleção e, em seguida, estilizá-la de maneiras diferentes, se estiver marcada ou não. Mas não há boas maneiras de fazer isso. Você tem que adicionar extensão extra, div extra e, para uma aparência realmente agradável, adicionar algum javascript.
Portanto, a melhor solução é usar uma pequena função jQuery e duas imagens de fundo para definir o estilo dos dois status diferentes do botão. Exemplo com um efeito para cima / baixo dado por bordas:
Obviamente, você pode adicionar imagens de fundo que representam botão para cima e botão para baixo e tornar a cor de fundo transparente.
fonte
O JQuery UI simplifica a criação de botões de alternância. Basta colocar isso
em sua página e, em seguida, em seu corpo
onLoad
ou$.ready()
(ou alguns literais de objetoinit()
funcionam se você está construindo um site ajax ...) solte algum JQuery como:é isso aí. (não se esqueça do
< label for=...>
porque JQueryUI usa isso para o corpo do botão de alternância.)A partir daí, você apenas trabalha com ele como qualquer outro
input="checkbox
"porque esse é o que o controle subjacente ainda é, mas a IU do JQuery apenas o faz parecer um botão de alternância bonito na tela.fonte
aqui está um exemplo usando
pure css
:fonte
Em combinação com esta resposta, você também pode usar esse tipo de estilo, que é como o alternador de configurações móveis.
HTML
CSS
jQuery
Poderia ser bem mais bonita, mas dá ideia.
Uma vantagem é que pode ser animado com jquery e / ou CSS3
Fiddler
fonte
Se você quiser um botão adequado, precisará de algum javascript. Algo assim (precisa de algum trabalho no estilo, mas você entendeu). Não me incomodaria em usar jquery para algo tão trivial para ser honesto.
fonte
Você pode apenas usar
toggleClass()
para rastrear o estado. Em seguida, você verifica se o elemento botão tem a classe, assim:E eu uso o
button
elemento para botões por razões semânticas.fonte
Você pode usar um elemento âncora (
<a></a>
) e usar um: active e um: link para alterar a imagem de fundo para ativar ou desativar. Apenas um pensamento.Editar: O método acima não funciona muito bem para alternar. Mas você não precisa usar jquery. Escreva uma função javascript onClick simples para o elemento, que altera a imagem de fundo apropriadamente para fazer com que pareça que o botão foi pressionado, e defina um sinalizador. Então, no próximo clique, a imagem e a bandeira são revertidas. Igual a
E o html assim
<div id="toggleDiv" onclick="toggle()">Some thing</div>
fonte
Não acho que usar JS para criar um botão seja uma boa prática. E se o navegador do usuário desativar o JavaScript?
Além disso, você pode apenas usar uma caixa de seleção e um pouco de CSS para fazer isso. E é fácil recuperar o estado de sua caixa de seleção.
Este é apenas um exemplo, mas você pode estilizá-lo como quiser.
http://jsfiddle.net/4gjZX/
HTML
CSS
Espero que isto ajude
fonte
Eu estaria inclinado a usar uma classe em seu css que altera o estilo ou a largura da borda quando o botão é pressionado, dando a aparência de um botão de alternância.
fonte
Experimente esta parte:
fonte
Existe um plugin jquery da Swizec , que pode fazer isso entre outras coisas: https://github.com/Swizec/styled-button
(O link antigo era http://swizec.com/code/styledButton/ , não testei totalmente a substituição, apenas encontrei com o Google.)
fonte
Você pode usar a pseudoclasse "ativa" (ela não funcionará no IE6, no entanto, para elementos que não sejam links)
fonte
Aqui está um exemplo / variante (mais detalhes descritos) de ToggleButton usando jQuery com
<label for="input">
implementação.Primeiro, vamos criar um contêiner para o nosso ToggleButton usando HTML clássico
<input>
e<label>
Em seguida, definiremos a função para alternar nosso botão. Nosso botão, na verdade, é o usual
<label>
que iremos estilizar para representar a alternância de valores.A função é implementada de forma reutilizável. Você pode usá-lo para mais de um, dois ou até três ToggleButtons que você criou.
... e finalmente ... para que funcione como esperado, devemos ligar a função de alternância a um evento (evento de "mudança") de nosso
<label>
botão improvisado (será umclick
evento porque não estamos alterandocheckbox
diretamente, então nenhumchange
evento pode ser disparado para<label>
).Com CSS podemos definir
backgorund-image
ou algunsborder
para representar a mudança no valor enquanto<label>
faremos o trabalho para nós em alterar o valor de uma caixa de seleção;).Espero que isso ajude alguém.
fonte
.addClass()
/.removeClass()
você pode usar.toggleClass()
, mas o método descrito define explicitamente ações parachecked
/unchecked
valores.Experimentar;
E certifique-se no
Lembre-se de que quando você está codificando isso, apenas
somename
esomeid
pode mudar na tag de entrada, caso contrário, não funciona.fonte
Eu também estava procurando uma resposta, e queria consegui-la com CSS. Encontrei solução por CSS NINJA. É uma boa iniciação
<input type="checkbox">
e alguns css Live demo ! Embora não esteja funcionando no IE 8, você pode implementar o selectivizr ! e correção CSS quando as utilizaçõesopacity
parafilter
fazê-lo funcionar no IE.EDITAR 2014:
para os novos botões de alternância, eu uso a solução encontrada no blog do Lea Verou visualmente semelhante à caixa de seleção do iOS
fonte