Desafiei-me a criar uma experiência visualmente dinâmica e interativa apenas em HTML e CSS (sem Javascript). Até agora, não encontrei nenhum recurso que eu precisasse em CSS e HTML puro. Este talvez seja um pouco mais difícil.
Eu preciso impedir que o usuário clicar duas vezes <a>, <input type="submit">e <button>tags. Isso evita que eles enviem um formulário duas vezes ou acidentalmente façam 2 solicitações GET para um URL. Como isso pode ser feito em CSS puro? Mesmo que não possamos definir disabledsem o JS, deve haver alguma técnica de máscara ou combinação de estilos que possa lidar com isso aqui em 2020.
Aqui está um exemplo simples de uma tentativa:
.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>
Infelizmente, isso é desativado antes que o evento de clique real seja acionado por algum motivo. Talvez as âncoras não sejam a melhor maneira de testar? Vou continuar a fazer novas tentativas.
pointer-events: allpor padrão, mas não nos estados: active ou: focus? Como definido pointer-events: nonepara esses estados?
el:active, el:focuscombinado com eventos-ponteiro