Me he desafiado a mí mismo para crear una experiencia visualmente dinámica e interactiva en HTML y CSS solamente (sin Javascript). Hasta ahora, no he encontrado ninguna característica que necesitara que no pudiera hacer en CSS y HTML puro. Este es quizás un poco más difícil.
Tengo que evitar que el usuario hace doble clic <a>, <input type="submit">y <button>las etiquetas. Esto es para evitar que envíen dos veces un formulario o realicen accidentalmente 2 solicitudes GET a una URL. ¿Cómo se puede hacer esto en CSS puro? Incluso si no podemos establecer disabledsin JS, debería haber alguna técnica de enmascaramiento o combinación de estilos que pueda manejarlo aquí en 2020.
Aquí hay un ejemplo simple de un intento:
.clicky:focus{
display: none;
pointer-events: none;
}
<a href="#down" class="clicky">test</a>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p id="down">target</p>
Desafortunadamente, esto lo deshabilita antes de que se active el evento de clic real por alguna razón. ¿Quizás las anclas no son la mejor manera de probar? Continuaré haciendo más intentos.

pointer-events: allpor defecto, pero no en los estados: activo o: ¿foco? ¿Como establecidopointer-events: nonepara esos estados?el:active, el:focuscombinado con eventos de punteroRespuestas:
Una idea es tener una capa que aparezca en la parte superior del elemento después del primer clic para evitar el segundo.
Aquí hay una idea básica donde consideraré una duración de
1sentre dos clics que puede disminuir. Intente hacer clic en el botón / enlace y notará que puede hacer clic nuevamente solo después1s.Estoy agregando una pequeña superposición para ver mejor el truco
fuente
<a>etiqueta<a href="#" onclick="console.log('lalala')">Click me</a>para vincular con el resto del código, nada se registra en la consola. En mi opinión, el enlace no se hace clic<a>etiqueta. Intenté probar con los botones de envío, pero monitorear al inspector de red es extraño e inconsistente. Cuando hago clic en el enlace, no activa el clic. Si establece un objetivo en un ancla y hace clic en el enlace, deshabilitará el enlace pero no saltará al ancla.La primera solución
La idea es usar
radio buttonstate by:checkedpara hacer modificaciones. Escondemos elradiocírculo y cuándo:checkedpara<a>hacerpointer-events: none;y parabuttonsdiferentes tipos los ocultamos y mostramosdisabledunos.La segunda solución
Este se adapta para
links. La idea es usar:target. El objetivoelementestá oculto en primer lugar. Luego, cuando se dirige el uso:targetdepointer-events: none;de<a>.Mostrar fragmento de código
fuente