Rumah > hujung hadapan web > tutorial css > Apakah perbezaan antara: fokus ,: fokus-kelihatan, dan: fokus-fokus dalam CSS?

Apakah perbezaan antara: fokus ,: fokus-kelihatan, dan: fokus-fokus dalam CSS?

Patricia Arquette
Lepaskan: 2025-01-28 16:06:11
asal
437 orang telah melayarinya

Jadual Kandungan

  • : Fokus pseudo-class
  • Masalah dengan: Fokus
  • interaksi menggunakan papan kekunci
  • The: Focus-Visible Pseudo-Class
  • Bagaimana dengan: fokus-fokus?
    • kes penggunaan praktikal untuk: fokus-fokus
  • bacaan selanjutnya

Seperti yang anda ketahui, terdapat tiga kelas pseudo yang sama dalam CSS, iaitu fokus ,: fokus-kelihatan, dan: fokus.

Pada pandangan pertama, seseorang mungkin keliru tentang perbezaan antara ini dan bila menggunakan yang mana. Berita baiknya ialah: ketiga-tiga kelas pseudo ini sangat mudah difahami dan dibezakan antara satu sama lain.

Dalam artikel ini, kita akan memahami apa sebenarnya: fokus ,: fokus-kelihatan, dan: fokus-dengan-fokus, dan kapan dan bagaimana menggunakan setiap kelas pseudo ini.

Bacaan Lanjut: Sekiranya anda memerlukan penyegaran di kelas pseudo, lepaskan kelas pseudo CSS, dalam kursus CSS kami.


The: Focus pseudo-class

perkara pertama yang pertama,

: fokus kelas pseudo terpakai kepada elemen apabila ia fokus .

Fokus ini boleh dibuat menggunakan tetikus (apabila kita mengklik pada elemen), papan kekunci (ketika kita menavigasi ke tab dengan menekan), atau program yang mendasari (ketika kita menggunakan JavaScript).

Bacaan Lanjut: Anda boleh meneroka: fokus pseudo-kelas secara terperinci dalam kelas pseudo CSS :: fokus.

Selain itu, hanya

unsur -unsur yang fokus dibenarkan untuk menerima fokus dan, oleh itu, menjadi subjek: fokus. Ini biasanya unsur -unsur interaktif dalam html - seperti & lt; input & gt;, & lt; textarea & gt;, & lt; butang & gt;, dan sebagainya.

? Notis : unsur-unsur yang tidak interaktif seperti & lt; p & gt;, & lt; h1 & gt;, & lt; blockquote & gt;, & lt; code & gt;, dan lain-lain, tidak fokus dan oleh itu tidak boleh menjadi subjek: fokus. Hanya jika kita secara eksplisit membuat mereka fokus, dengan menetapkan atribut tabIndex pada mereka, yang kita boleh harapkan: fokus untuk memohon kepada mereka.

Kembali ke: Fokus, kelas pseudo ini digunakan untuk memilih dan, selepas itu, gunakan gaya untuk unsur-unsur apabila mereka berada dalam keadaan fokus.

Mungkin, contoh yang paling naif untuk berbuat demikian adalah untuk mempertimbangkan medan input seperti yang ditunjukkan di bawah:


<label>
   <span>Name</span>
   <input type="text" name="name">
</label>
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Contoh Live

ketika kita mengklik pada medan input, ia menerima tumpuan dan, akibatnya, penyemak imbas menggunakan garis besar hitam kepadanya, seperti yang digambarkan di bawah:

The input field focused Ini membantu kita melihat input mana yang kita ada dalam bentuk banyak medan input.

untuk lebih menghargai manfaat ini, bayangkan sebaliknya. Katakan kita klik pada medan input dan tidak mempunyai gaya khas yang digunakan untuk medan seperti yang kita lakukan.

Apa pendapat anda, adakah kita mungkin untuk menentukan input mana yang kita ada sekarang? Perkara yang ideal dalam merancang antara muka pengguna dalam apa jua bentuk adalah untuk

'membuat segala -galanya semudah mungkin.' -class.

Inti:

: Fokus pseudo-kelas (walaupun dua lagi kelas pseudo fokus) membantu kami

meningkatkan kebolehcapaian

laman web.

Dengan jelas berkomunikasi dengan pengguna secara visual tentang di mana dia berada di laman web, kami menjadikannya cukup mudah baginya untuk berinteraksi dengan laman web dan mendapatkan karyanya dilakukan tanpa sebarang kekeliruan.

dengan kata lain ,: fokus lebih penting daripada kelas pseudo daripada yang kita fikirkan.

Tetapi bukan satu-satunya kelas pseudo berasaskan fokus; Kami mempunyai

: Focus-Visible

juga.

Masalah dengan: fokus


Dalam contoh di atas untuk: fokus, kami menganggap medan input teks asas. Mari kita beralih ke butang untuk melihat kelemahan: fokus.

Pertimbangkan butang berikut, dengan menambah: Peraturan fokus untuknya:


Contoh Live
<label>
   <span>Name</span>
   <input type="text" name="name">
</label>
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
<button>A button</button>
Salin selepas log masuk
Salin selepas log masuk
ketika kita mengklik butang, kita mendapat garis besar yang dikehendaki, seperti yang digambarkan di bawah:

Tetapi tunggu sebentar? Adakah keinginan kita yang diinginkan? The button focused

berkata cara lain: Adakah keputusan bijak untuk mempamerkan garis besar apabila kita mengklik butang menggunakan tetikus? kerana ternyata, tidak, itu tidak!

mari kita faham mengapa ...

Apabila kita mengklik butang - atau mana -mana elemen interaktif, secara umum, yang dimaksudkan untuk melakukan tindakan

, misalnya. Pautan - kita sudah tahu di mana kita berada di laman web. Jelas sekali, kerana kami mengklik secara sedar pada butang, kami pastinya tidak dapat dikelirukan tentang elemen mana yang ada pada halaman web yang kini mempunyai tumpuan - kami dengan jelas tahu bahawa ia adalah butang yang kami klik yang mempunyai fokus pada masa ini.

Dalam hal ini, ia tidak masuk akal, jika sama sekali, untuk menekankan butang secara visual untuk menjadi elemen yang sedang difokuskan.

Tetapi mengapa ini masuk akal untuk medan input?

soalan yang baik. Anda betul -betul dalam pemerhatian anda bahawa: Fokus berfungsi dengan baik apabila kami menggunakannya pada medan input dan ada alasan yang mudah untuknya. Apabila kita mengklik pada medan input menggunakan tetikus, pekerjaan

kami tidak selesai ; Kami masih perlu memasukkan data ke dalam bidang.

Dan kerana kerja kita belum selesai, kita dengan cepat dan jelas perlu mengetahui input mana yang sedang aktif.

yang paling penting melihat perbezaan yang penting, namun halus, antara medan input dan butang (dan unsur -unsur interaktif yang sedemikian seperti):

  • medan input tidak mencapai tugas segera dan oleh itu memerlukan fokus untuk digambarkan walaupun kita menggunakan tetikus untuk berinteraksi dengannya.
  • Butang menyelesaikan tugas dengan segera (mis. Menambah item ke kereta) dan oleh itu tidak menimbulkan keperluan untuk mempamerkannya secara visual dalam keadaan fokus apabila kita berinteraksi dengannya menggunakan tetikus.
Jadi, pada ketika ini, kita tahu bahawa medan input gel dengan baik dengan: fokus kelas pseudo tetapi itu bukan kes dengan butang.

tetapi perlu diingat bahawa penalaran ini hanya terpakai apabila kita berinteraksi dengan unsur -unsur ini menggunakan tetikus.

Apa yang berlaku apabila kita beralih ke papan kekunci?

mari kita cari ...


Interaksi menggunakan papan kekunci

seperti yang anda tahu, tidak hanya mungkin untuk menavigasi di sekitar laman web menggunakan tetikus; Kita boleh menggunakan papan kekunci untuk ini juga, dan

sama baiknya .

Malah, jika laman web dibina dengan cara ini untuk hanya menghiburkan interaksi tetikus, ia sangat tidak boleh diakses.

Bayangkan seseorang memecahkan peranti tetikus mereka dan kini ingin mempersiapkan peperiksaan mereka, dan tidak ada cara untuk memerintahkan yang lain pada masa ini. Kes terburuk adalah jika orang itu mahu menyediakan dari laman web yang dibina hanya sekitar interaksi tetikus.

Sebagai pemaju CSS, kita mesti mengakui laman web fakta dan reka bentuk ini untuk diakses tanpa tetikus seperti itu. Dalam hal ini, kita mesti pastikan untuk memberikan penekanan visual yang diperlukan pada unsur -unsur interaktif apabila mereka menerima fokus.

dan ini kini termasuk butang juga.

mari kita nyatakan ini lagi.

Apabila kita menggunakan tetikus untuk berinteraksi dengan laman web, mewujudkan penekanan visual untuk butang (dan unsur -unsur yang serupa) dalam keadaan fokus mereka tidak diperlukan; Malah, ia tidak diingini seperti yang kita lihat di atas. Ini kerana pengguna sudah tahu bahawa selepas mengklik butang, ia adalah yang menjadi fokus.

tetapi apabila kita menggunakan papan kekunci sebaliknya,

mencipta penekanan visual adalah sangat diperlukan . Ini kerana, sekarang, pengguna tidak menyedari elemen interaktif yang fokus. Kami perlu untuk mempamerkan secara visual ini.

Masalahnya ialah kita tidak boleh menggunakan: fokus untuk kebimbangan gaya ini kerana ...

baik ... ia terpakai kepada butang walaupun kita berinteraksi dengan mereka menggunakan tetikus.

Sekarang apa?

tidak perlu risau, kerana kita mempunyai

: fokus-kelihatan untuk menyelamatkan!


The: Pseudo-Class Focus-Visible

Saya menekankan banyak pada hakikat bahawa sebelum belajar apa -apa dalam pengaturcaraan, tatap pertama ke atas tatanama (kata mewah untuk

'penamaan' ). Kemungkinan besar bahawa makna terletak pada nama itu sendiri.

Mengikuti ini, jika kita menganalisis nama: fokus-kelihatan, ia jelas mempunyai kaitan dengan

'fokus' tetapi juga ada kaitan dengan 'kelihatan' .

bolehkah anda memikirkan hanya dengan nama apa maksud kelas pseudo ini?

well ,: fokus-kelihatan terpakai kepada elemen yang fokus dan fokus yang perlu dilihat (idealnya). Secara padat, kita juga boleh mengatakan bahawa: fokus-kelihatan terpakai kepada elemen yang sepatutnya mempunyai fokus yang kelihatan .

: fokus-kelihatan hanya muncul apabila kita membawa elemen dalam fokus menggunakan papan kekunci, atau beberapa interaksi bukan tikus lain (mis. Menggunakan JavaScript).

yang paling penting-dan ini benar-benar penting-: fokus-kelihatan tidak terpakai kepada butang (dan unsur-unsur seperti itu) apabila mereka menerima tumpuan berdasarkan interaksi tetikus .

Dengan ini, mari kita kembali ke butang & lt; Contoh di atas dan gantikan: Peraturan fokus dengan: fokus-kelihatan supaya garis besar hanya dibentangkan apabila butang menerima fokus melalui papan kekunci:

<label>
   <span>Name</span>
   <input type="text" name="name">
</label>
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Contoh Live

inilah yang kita dapat apabila kita mengklik butang (menggunakan tetikus):

The button (with a :focus-visible style) focused again

tiada apa -apa.

Ini membawa kita tepat pada kesimpulan muktamad bahawa apabila butang gaya (atau unsur-unsur seperti yang lain, mis. 🎜>

: fokus-kelihatan pada dasarnya adalah situasi menang-menang dalam (a) kita tidak menggunakan gaya apabila butang diklik, dan oleh itu fokus, menggunakan tetikus dan (b) kita memastikan laman web kami tetap dapat diakses Apabila menggunakan papan kekunci dengan gaya fokus yang diperlukan pada butang. The button focused via the keyboard

: Focus-visible adalah wira! (Tetapi saya tidak tahu nama filem!)

Bagaimana dengan: fokus-fokus? Jelas sekali, kita tidak dapat menamatkan artikel ini tanpa pergi lebih kurang berguna

: fokus-fokus
pseudo-class. Mari kita buat sekarang.

: fokus-fokus, seperti namanya (

ingat untuk membaca nama dengan teliti ), terpakai kepada elemen yang mempunyai fokus di dalamnya

.

dengan kata lain, mana-mana elemen yang mengandungi elemen keturunan yang sepadan: fokus, atau sepadan dengan dirinya sendiri: fokus, adalah calon untuk: fokus-fokus. berikut adalah contoh:

Kami mempunyai butang yang terkandung di dalam & lt; div & gt;. Matlamat kami adalah untuk gaya & lt; div & gt; Khususnya apabila butangnya fokus. CSS berikut menyelesaikannya:


<button>A button</button>
Salin selepas log masuk
Salin selepas log masuk
Contoh Live


ketika butang menerima fokus, & lt; div & gt; mendapat warna latar merah jambu.

cukup asas.

? Notis : Perlu diingat bahawa: fokus-dengan-berkelakuan tepat seperti: Fokus kerana ia juga muncul pada interaksi tetikus pada butang, sebagai contoh. Ia tidak mempamerkan tingkah laku yang serupa dengan: fokus-kelihatan.

Sekarang anda mungkin mencari contoh yang lebih praktikal: fokus-fokus dan itulah yang saya ada seterusnya untuk anda.

seperti yang dinyatakan sebelum ini,: fokus-fokus tidak biasa digunakan dalam CSS tetapi beberapa kes sedemikian rupa sehingga mereka dapat diselesaikan dengan cukup elegan menggunakan: fokus-dengan-fokus. Baca terus untuk mengetahui tentang kes tersebut.

Kes penggunaan praktikal untuk: fokus-fokus

Katakan kami mempunyai bar aksesibiliti di laman web yang hanya muncul apabila menggunakan navigasi papan kekunci. Pada mulanya, ia tersembunyi tetapi hanya secara visual; iaitu, mungkin untuk tab ke salah satu butang di dalam bar ini.

? NOTIS : 'Tersembunyi hanya secara visual' bermaksud bahawa elemen itu tidak mempunyai paparan: Tiada atau penglihatan: Tersembunyi ditetapkan di atasnya untuk sebenarnya menyembunyikannya. Sebagai contoh, kelegapan: 0 menyembunyikan elemen hanya secara visual.

Sekarang, saat mana -mana butang dalam bar kebolehaksesan ini menjadi tumpuan, ia diperlukan untuk mempamerkan bar ini kepada pengguna.

Tetapi bagaimana untuk memilih bar aksesibiliti apabila salah satu butangnya mempunyai tumpuan? > adalah borang pendek untuk 'aksesibiliti' ), pemilih yang dikehendaki ialah .a11y-bar: fokus-dengan. .a11y-bar: fokus-fokus memilih bar .a11y apabila fokus berada di dalamnya, yang betul-betul kita perlukan.

kerja yang baik!

Pautan di bawah menunjukkan contoh ini: Contoh Live

Bacaan lanjut

Walaupun kami telah merangkumi hampir semua perkara yang perlu kita ketahui tentang: fokus ,: fokus-kelihatan, dan: fokus-fokus, masih ada nilai dalam membaca lebih lanjut dari beberapa sumber seperti yang disebutkan di bawah:

Menggunakan CSS: Fokus-dilihat untuk memberikan petunjuk fokus papan kekunci-Teknik WCAG 2.1

Memahami Kriteria Kejayaan 2.4.7: Fokus Terlihat | Wai | W3C
  • 9.3. Fokus input pseudo-class :: fokus-pemilih tahap 4 | W3C
  • 9.4. Pseudo-Class yang ditonjolkan fokus ::: Fokus-kelihatan-Pemilih Tahap 4 | W3C
  • 9.5. Fokus Pseudo-Class :: Fokus-Within-Pemilih Tahap 4 | W3C
  • Belajar CSS hari ini
Jika anda seorang pemula di CSS dan ingin mempelajari asas -asas dengan baik, pertimbangkan kursus CSS pada kod.

Atas ialah kandungan terperinci Apakah perbezaan antara: fokus ,: fokus-kelihatan, dan: fokus-fokus dalam CSS?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:dev.to
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan