Saya telah menantang diri saya untuk menciptakan pengalaman visual yang dinamis dan interaktif hanya dalam HTML dan CSS (Tanpa Javascript). Sejauh ini, saya belum menemukan fitur apa pun yang saya butuhkan yang tidak dapat saya lakukan dalam CSS dan HTML murni. Yang ini mungkin sedikit lebih sulit.
Saya perlu mencegah pengguna mengklik dua kali <a>
, <input type="submit">
dan memberi <button>
tag. Ini untuk mencegah mereka mengirim dua formulir atau secara tidak sengaja membuat 2 permintaan GET ke URL. Bagaimana ini bisa dilakukan dalam CSS murni? Bahkan jika kita tidak dapat mengatur disabled
tanpa JS, harus ada beberapa teknik masking atau kombinasi gaya yang dapat mengatasinya di sini pada tahun 2020.
Ini adalah contoh sederhana dari suatu upaya:
.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>
Sayangnya, ini menonaktifkannya sebelum acara klik yang sebenarnya dipecat karena alasan tertentu. Mungkin jangkar bukan cara terbaik untuk menguji? Saya akan terus melakukan upaya lebih lanjut.
pointer-events: all
secara default, tetapi tidak di: status aktif atau: fokus? Suka diaturpointer-events: none
untuk negara-negara itu?el:active, el:focus
dikombinasikan dengan pointer-eventsJawaban:
Satu ide adalah memiliki layer yang muncul di bagian atas elemen setelah klik pertama untuk menghindari yang kedua.
Berikut adalah ide dasar di mana saya akan mempertimbangkan durasi
1s
antara dua klik yang dapat Anda kurangi. Coba klik tombol / tautan dan Anda akan melihat bahwa Anda dapat mengklik lagi hanya setelah1s
.Saya menambahkan overlay kecil untuk melihat triknya
sumber
<a>
tag<a href="#" onclick="console.log('lalala')">Click me</a>
untuk menghubungkan dengan sisa kode, tidak ada log untuk menghibur. imho itu berarti tautan tidak diklik<a>
tag. Saya mencoba pengujian dengan mengirimkan tombol tetapi pemantauan inspektur jaringan aneh dan tidak konsisten. Ketika saya mengklik tautan, itu tidak memecat klik. Jika Anda menetapkan target ke jangkar dan mengklik tautan, itu akan menonaktifkan tautan tetapi tidak akan melompat ke jangkar.Solusi pertama
Idenya adalah menggunakan
radio button
keadaan dengan:checked
melakukan modifikasi. Kami menyembunyikanradio
lingkaran dan kapan:checked
untuk<a>
membuatpointer-events: none;
dan untukbuttons
berbagai jenis kami menyembunyikannya dan menunjukkandisabled
yang lainnya.Solusi kedua
Ini cocok untuk
links
. Idenya adalah menggunakan:target
. Targeelement
disembunyikan terlebih dahulu. Kemudian ketika ditargetkan penggunaan:target
untukpointer-events: none;
dari<a>
.Tampilkan cuplikan kode
sumber