Quiero crear un botón de alternancia en html usando css. Lo quiero para que cuando haga clic en él, se mantenga presionado y luego cuando haga clic en él nuevamente, salga.
Si no hay forma de hacerlo, simplemente use css. ¿Hay alguna forma de hacerlo usando jQuery?
Respuestas:
La buena forma semántica sería usar una casilla de verificación y luego diseñarla de diferentes maneras si está marcada o no. Pero no hay buenas formas de hacerlo. Tienes que agregar espacio adicional, div adicional y, para una apariencia realmente agradable, agregar algo de javascript.
Entonces, la mejor solución es usar una pequeña función jQuery y dos imágenes de fondo para diseñar los dos estados diferentes del botón. Ejemplo con un efecto arriba / abajo dado por bordes:
Obviamente, puede agregar imágenes de fondo que representen el botón hacia arriba y hacia abajo, y hacer que el color de fondo sea transparente.
fuente
JQuery UI simplifica la creación de botones de alternancia. Solo pon esto
en su página y luego en su cuerpo
onLoad
o su$.ready()
(o algunos objetos literalesinit()
funcionan si está construyendo un sitio ajax ...) suelte algo de JQuery así:Eso es. (no olvides el
< label for=...>
porque JQueryUI lo usa para el cuerpo del botón de alternancia ..)A partir de ahí, simplemente trabajas con él como cualquier otro
input="checkbox
"porque eso es lo que sigue siendo el control subyacente, pero la interfaz de usuario de JQuery simplemente lo aplica para que parezca un bonito botón de alternancia en la pantalla.fuente
aquí hay un ejemplo usando
pure css
:fuente
En combinación con esta respuesta, también puede usar este tipo de estilo que es como alternador de configuraciones móviles.
HTML
CSS
jQuery
Podría ser mucho más bonito, pero da la idea.
Una ventaja es que se puede animar con jquery y / o CSS3
Fiddler
fuente
Si desea un botón adecuado, necesitará algo de javascript. Algo como esto (necesita algo de trabajo en el estilo pero entiendes la esencia). No me molestaría en usar jquery para algo tan trivial para ser honesto.
fuente
Puede usarlo
toggleClass()
para rastrear el estado. Luego verifica si el elemento del botón tiene la clase, así:Y uso el
button
elemento para botones por razones semánticas.fuente
Podrías usar un elemento de anclaje (
<a></a>
) y usar un enlace: activo y: para cambiar la imagen de fondo para activar o desactivar. Solo un pensamiento.Editar: el método anterior no funciona demasiado bien para alternar. Pero no es necesario utilizar jquery. Escriba una función simple de javascript onClick para el elemento, que cambie la imagen de fondo de manera apropiada para que parezca que el botón está presionado, y establezca alguna bandera. Luego, en el siguiente clic, se revierte la imagen y la bandera. Al igual que
Y el html así
<div id="toggleDiv" onclick="toggle()">Some thing</div>
fuente
No creo que usar JS para crear un botón sea una buena práctica. ¿Qué pasa si el navegador del usuario desactiva JavaScript?
Además, puede usar una casilla de verificación y un poco de CSS para hacerlo. Y es fácil recuperar el estado de su casilla de verificación.
Este es solo un ejemplo, pero puede diseñarlo como desee.
http://jsfiddle.net/4gjZX/
HTML
CSS
Espero que esto ayude
fuente
Me inclinaría a usar una clase en su CSS que altera el estilo del borde o el ancho del borde cuando se presiona el botón, por lo que da la apariencia de un botón de alternancia.
fuente
Prueba este bit:
fuente
Hay un complemento jquery de Swizec , que puede hacer esto, entre otras cosas: https://github.com/Swizec/styled-button
(El enlace anterior era http://swizec.com/code/styledButton/ , no probé completamente el reemplazo, solo lo encontré con Google).
fuente
Puede usar la pseudoclase "activa" (aunque no funcionará en IE6 para elementos que no sean enlaces)
fuente
Aquí está uno de los ejemplos / variantes (más detalles descritos) de ToggleButton usando jQuery con
<label for="input">
implementación.Primero crearemos un contenedor para nuestro ToggleButton usando HTML clásico
<input>
y<label>
A continuación, definiremos la función para alternar nuestro botón. Nuestro botón en realidad es el habitual,
<label>
que diseñaremos para representar el cambio de valor.La función se implementa de forma reutilizable. Puede usarlo para más de uno, dos o incluso tres ToggleButtons que haya creado.
... y finalmente ... para que funcione como se esperaba, debemos vincular la función de alternancia a un evento (evento de "cambio") de nuestro
<label>
botón improvisado (será unclick
evento porque no estamos alterando elcheckbox
directamente, por lo que no haychange
evento puede ser despedido<label>
).Con CSS podemos definir
backgorund-image
o algunosborder
para representar el cambio de valor mientras<label>
que hará el trabajo por nosotros al alterar el valor de una casilla de verificación;).Espero que esto ayude a alguien.
fuente
.addClass()
/.removeClass()
puede usar.toggleClass()
, pero el método descrito define explícitamente acciones parachecked
/unchecked
valores.Tratar;
Y asegúrate de
Recuerde cuando está codificando esto, solo
somename
ysomeid
puede cambiar en la etiqueta de entrada, de lo contrario no funciona.fuente
En lo que respecta a la búsqueda de la respuesta también, y quería lograrlo con CSS. Encontré una solución por CSS NINJA ¡Es una buena impulsión
<input type="checkbox">
y una demostración en vivo de css ! Aunque no funciona en IE 8, ¡podría implementar selectivizr ! y arreglar CSS donde se usaopacity
parafilter
que funcione en IE.EDITAR 2014:
para los nuevos botones de alternancia, utilizo una solución que se encuentra en el blog de Lea Verou visualmente similar a la casilla de verificación de iOS
fuente