Tengo un elemento de imagen que quiero cambiar al hacer clic.
<img id="btnLeft">
Esto funciona:
#btnLeft:hover {
width:70px;
height:74px;
}
Pero lo que necesito es:
#btnLeft:onclick {
width:70px;
height:74px;
}
Pero, no funciona, obviamente. ¿Es posible tener onclick
comportamiento en CSS (es decir, sin usar JavaScript)?
:active
funciona mientras el mouse está abajo. Dependiendo de lo que intente hacer, es posible que pueda hacerlo funcionar utilizando la pseudoclase CSS4:target
.:target
no es nuevo para Selectores 4. Ha estado disponible desde Selectores 3, que ya era una recomendación durante un año en el momento de la redacción.Respuestas:
Lo más cercano que obtendrás es
:active
:Sin embargo, esto solo aplicará el estilo cuando se mantenga presionado el botón del mouse. La única forma de aplicar un estilo y mantenerlo aplicado al hacer clic es usar un poco de JavaScript.
fuente
Respuesta a partir de 2019:
La mejor manera (en realidad, la única forma *) de simular un evento de clic real usando solo CSS (en lugar de simplemente pasar el cursor sobre un elemento o activar un elemento, donde no tiene mouseUp ) es usar el hack de la casilla de verificación. Funciona adjuntando
label
a un<input type="checkbox">
elemento a través delfor=""
atributo de la etiqueta .Esta característica tiene un amplio soporte de navegador (la
:checked
pseudoclase es IE9 +).Aplicar el mismo valor a un
<input>
atributo 's ID y un acompañamiento<label>
' sfor=""
atributo, y se puede decir que el navegador re-estilo de la etiqueta de clic en la:checked
pseudo-clase, gracias al hecho de que al hacer clic una etiqueta comprobará y desactive la "asociado"<input type="checkbox">
.* Se puede simular un evento "seleccionado" a través de la
:active
o:focus
pseudo-clase en IE7 + (por ejemplo, para un botón que normalmente es50px
amplia, puede cambiar su anchura, mientras queactive
:#btnControl:active { width: 75px; }
), pero los que no son verdad "clic" eventos. Están "en vivo" todo el tiempo que se selecciona el elemento (por ejemplo, haciendo Tabbing con su teclado), que es un poco diferente de un evento de clic verdadero, que activa una acción, generalmentemouseUp
.Demostración básica del truco de la casilla de verificación (la estructura básica del código para lo que está pidiendo):
Mostrar fragmento de código
Aquí he colocado la etiqueta justo después de la entrada en mi marcado. Esto es para que pueda usar el selector de hermanos adyacentes (la +tecla) para seleccionar solo la etiqueta que sigue inmediatamente a mi
#demo
casilla de verificación. Dado que la:checked
pseudoclase se aplica a la casilla de verificación,#demo:checked + label
solo se aplicará cuando la casilla de verificación esté marcada.Demostración para cambiar el tamaño de una imagen al hacer clic, que es lo que está preguntando:
Con eso se dice, no es una mala noticia. Debido a que una etiqueta solo puede asociarse con un control de formulario a la vez , eso significa que no puede soltar un botón dentro de las
<label></label>
etiquetas y llamarlo por día. Sin embargo, nosotros podemos usar un poco de CSS para hacer la mirada etiqueta y se comportan bastante cerca de cómo un botón HTML parece y se comporta.Demostración para imitar un efecto de clic de botón, más allá de lo que está pidiendo:
Mostrar fragmento de código
La mayor parte del CSS en esta demostración es solo para diseñar el elemento de etiqueta. Si realmente no necesita un botón , y cualquier elemento antiguo será suficiente, puede eliminar casi todos los estilos en esta demostración, similar a mi segunda demostración anterior.
También se dará cuenta que tengo una propiedad fija allí,
-moz-outline-radius
. Hace un tiempo, Mozilla agregó esta increíble propiedad no especificada a Firefox, pero la gente de WebKit decidió que , por desgracia, no la agregarán . Considere que la línea de CSS es solo una mejora progresiva para las personas que usan Firefox.fuente
:checked
.Puede usar la pseudo clase
:target
para imitar un evento de clic, déjeme darle un ejemplo.Así es como se ve: http://jsfiddle.net/TYhnb/
Una cosa a tener en cuenta, esto solo se limita al hipervínculo, por lo que si necesita usar otro que no sea el hipervínculo, como un botón, es posible que desee piratearlo un poco, como diseñar un hipervínculo para que parezca un botón.
fuente
Si le das al elemento a,
tabindex
entonces puedes usar la:focus
pseudo clase para simular un clic.HTML
CSS
http://jsfiddle.net/NaTj5/
fuente
tabindex=-1
el elemento todavía se puede enfocar, pero solo con el mouse, no con el teclado, lo que es mejor en este caso. también puede usar unoutline:0
estilo para eliminar el borde azul cuando está enfocadoEditar: Respondió antes de que OP aclarara lo que quería. Lo siguiente es para un onclick similar a javascripts onclick, no la
:active
pseudo clase.Esto solo se puede lograr con Javascript o Checkbox Hack
El truco de la casilla de verificación esencialmente hace que haga clic en una etiqueta, que "marca" una casilla de verificación, lo que le permite diseñar la etiqueta como desee.
La demo
fuente
id
atributos para unirlos.TylerH hizo una muy buena respuesta, y solo tuve que actualizar esa última versión del botón.
fuente
¿Qué tal una solución CSS pura sin ser (que) hacky?
@TylerH tiene una gran respuesta pero es una solución bastante compleja. Tengo una solución para aquellos de ustedes que solo quieren un simple efecto "onclick" con CSS puro sin un montón de elementos adicionales.
Simplemente usaremos transiciones CSS. Probablemente podrías hacer algo similar con las animaciones.
El truco consiste en cambiar el retraso de la transición para que dure cuando el usuario hace clic.
Aquí agrego también la clase "clics" para que JavaScript también pueda proporcionar el efecto si es necesario. Uso el filtro de sombra paralela 0px porque resaltará el gráfico azul transparente dado de esta manera para mi caso.
Tengo un filtro a 0s aquí para que no surta efecto. Cuando se libera el efecto, puedo agregar la transición con un retraso para que proporcione un buen efecto de "clic".
Esto me permite configurarlo para que cuando el usuario haga clic en el botón, se resalte en azul y luego se desvanezca lentamente (por supuesto, también podría usar otros efectos).
Si bien está limitado aquí en el sentido de que la animación para resaltar es instantánea, aún proporciona el efecto deseado. Probablemente podría usar este truco con animación para producir una transición general más suave.
fuente
De acuerdo, esta quizás sea una publicación antigua ... pero fue el primer resultado en Google y decidió hacer su propia mezcla sobre esto como ...
PRIMERO UTILIZARÉ FOCUS
La razón de esto es que funciona bien para el ejemplo que estoy mostrando, si alguien quiere un evento de tipo mouse down, use active
EL CÓDIGO HTML:
EL CÓDIGO CSS:
JS FIDDLE LINK: http://jsfiddle.net/00wwkjux/
Entonces, ¿por qué estoy publicando esto en un hilo antiguo? Bueno, porque los ejemplos aquí varían y pensé en devolver uno a la comunidad, que es un ejemplo de trabajo.
Como ya respondió el creador del hilo, solo quieren que el efecto dure durante el evento de clic. Ahora, si bien esto no es exacto para esa necesidad, está cerca. active se animará mientras el mouse esté presionado y cualquier cambio que necesite que dure más tiempo debe hacerse con javascript.
fuente
¡Advertencia! Particularmente simple respuesta a continuación! :)
En realidad, puede tener un cambio que persiste (como un bloque / ventana emergente que aparece y permanece visible después de un clic) con solo CSS (y sin usar el hack de la casilla de verificación) a pesar de lo que muchas de las respuestas (de lo contrario correctas) aquí reclaman, siempre ya que solo necesitas persistencia durante el vuelo estacionario.
Así que eche un vistazo a las respuestas de Bojangles y TylerH si funcionan para usted, pero si desea una respuesta simple y CSS que mantendrá un bloque visible después de hacer clic (e incluso puede hacer que el bloque desaparezca con un clic de seguimiento), luego Mira esta solución.
Tuve una situación similar, necesitaba un div emergente con onClick donde no podía agregar ningún JS o cambiar el marcado / HTML (una verdadera solución CSS) y esto es posible con algunas advertencias. No puede usar el truco: target que puede crear una buena ventana emergente a menos que pueda cambiar el HTML (para agregar un 'id') para que quede fuera.
En mi caso, el div emergente estaba contenido dentro del otro div, y quería que apareciera encima del otro div, y esto se puede hacer usando una combinación de: active y: hover:
Ejemplo (así como uno que permite hacer clic en la ventana emergente para hacerla desaparecer) en:
http://davesource.com/Solutions/20150324.CSS-Only-Click-to-Popup-Div/
También he insertado un ejemplo de fragmento de código a continuación, pero el posicionamiento en el entorno limitado de stackoverflow es extraño, así que tuve que poner el texto 'haga clic aquí' después del innerDiv, que normalmente no es necesario.
fuente
Tengo el siguiente código para pasar el mouse y hacer clic con el mouse y funciona:
y este código oculta la imagen cuando haces clic en ella:
fuente
Tuve un problema con un elemento que tenía que ser de color ROJO al pasar el mouse y ser AZUL al hacer clic mientras se pasa el cursor. Para lograr esto con css necesita, por ejemplo:
Luché por un tiempo hasta que descubrí que el orden de los selectores de CSS era el problema que tenía. El problema fue que cambié los lugares y el selector activo no funcionaba. Entonces descubrí que
:hover
ir primero y luego:active
.fuente
puedes usar: target
para objetivo general
o filtrar por nombre de clase
o filtrar por nombre de identificación
fuente
:target
Ya se ha publicado una respuesta que muestra cómo usar , por lo que no necesita una más. Además, el interlocutor pregunta cómo tener un efecto "onclick", no mostrar / ocultar otros elementos.