Kecerdasan Data Generatif

Mengelola Fokus Pengguna dengan :fokus-terlihat

Tanggal:

Ini akan menjadi postingan ke-2 dalam seri kecil yang kami lakukan tentang aksesibilitas formulir. Jika Anda melewatkan posting pertama, periksa Formulir yang Dapat Diakses dengan Kelas Pseudo. Dalam posting ini kita akan melihat :focus-visible dan cara menggunakannya di situs web Anda!

Titik Sentuh Fokus

Sebelum kita melanjutkan :focus-visible, mari kita lihat kembali caranya :focus berfungsi di CSS Anda. Fokus adalah indikator visual di mana suatu elemen berinteraksi melalui keyboard, mouse, trackpad, atau teknologi bantu. Elemen tertentu bersifat interaktif secara alami, seperti tautan, tombol, dan elemen formulir. Kami ingin memastikan bahwa pengguna kami mengetahui di mana mereka berada dan interaksi yang mereka lakukan.

Ingat jangan lakukan ini di CSS Anda!

:focus {
  outline: 0;
}

/*** OR ***/

:focus {
  outline: none;
}

Saat Anda menghapus fokus, Anda menghapusnya SETIAP ORANG! Kami ingin memastikan bahwa kami tetap mempertahankan fokus.

Jika karena alasan apa pun Anda perlu menghapus fokus, pastikan juga terdapat fallback :focus gaya untuk pengguna Anda. Penggantian tersebut dapat disesuaikan dengan warna merek Anda, namun pastikan warna tersebut juga dapat diakses. Jika bagian pemasaran, desain, atau pencitraan merek tidak menyukai gaya cincin fokus default, inilah saatnya untuk mulai berdiskusi dan berkolaborasi dengan mereka mengenai cara terbaik untuk menambahkannya kembali.

Apa itu focus-visible?

Kelas semu, :focus-visible, sama seperti default kami :focus kelas semu. Ini memberi pengguna indikator bahwa ada sesuatu yang sedang difokuskan pada halaman. Cara Anda menulis :focus-visible dipotong dan dikeringkan:

:focus-visible {
  /* ... */
}

Ketika menggunakan :focus-visible dengan elemen tertentu, sintaksnya terlihat seperti ini:

.your-element:focus-visible {
  /*...*/
}

Hal hebat tentang menggunakan :focus-visible apakah Anda dapat membuat elemen Anda menonjol, cerah dan berani! Tidak perlu khawatir akan muncul jika elemen diklik/disadap. Jika Anda memilih untuk tidak mengimplementasikan kelas tersebut, defaultnya adalah cincin fokus agen pengguna yang bagi sebagian orang tidak diinginkan.

Latar belakang dari focus-visible

Sebelum kami memiliki :focus-visible, gaya agen pengguna akan diterapkan :focus ke sebagian besar elemen pada halaman; tombol, tautan, dll. Ini akan menerapkan garis luar atau "cincin fokus" ke elemen yang dapat difokus. Ini dianggap jelek, sebagian besar tidak menyukai cincin fokus default yang disediakan browser. Karena cincin fokus tidak bagus untuk dilihat, sebagian besar penulis menghapusnya… tanpa cadangan. Ingat, saat Anda menghapus :focus, hal ini mengurangi kegunaan dan membuat pengalaman tidak dapat diakses oleh pengguna keyboard.

Dalam kondisi web saat ini, browser tidak lagi menunjukkan fokus di sekitar berbagai elemen saat elemen tersebut memiliki fokus. Sebaliknya, browser menggunakan berbagai heuristik untuk menentukan kapan heuristik akan membantu pengguna, dan sebagai imbalannya memberikan cincin fokus. Berdasarkan Khan Academy, heuristik adalah, “sebuah teknik yang memandu suatu algoritma untuk menemukan pilihan yang baik.”

Artinya, browser dapat mendeteksi apakah pengguna berinteraksi dengan pengalaman dari keyboard, mouse, atau trackpad dan berdasarkan jenis input tersebut, browser menambah atau menghapus cincin fokus. Contoh dalam postingan ini menyoroti interaksi input.

Pada hari-hari awal :focus-visible kami menggunakan a isi poli untuk menangani cincin fokus yang dibuat oleh Alice Boxhall dan Brian Kardell, Mozilla juga mengeluarkan kelas semunya sendiri, :moz-focusring, sebelum spesifikasi resmi. Jika Anda ingin mempelajari lebih lanjut tentang hari-hari awal ring fokus, bacalah Pemeran A11y dengan Rob Dodson.

Pentingnya Fokus

Ada banyak alasan mengapa fokus itu penting dalam lamaran Anda. Pertama, seperti yang saya nyatakan di atas, kita sebagai duta web harus memastikan bahwa kita memberikan pengalaman terbaik dan dapat diakses. Kami tidak ingin pengguna kami menebak di mana mereka berada saat mereka menavigasi pengalaman tersebut.

Salah satu contoh yang selalu terlintas dalam pikiran adalah Situs web Dua Saudara Buta. Jika Anda membuka situs web dan mengeklik/mengetuk (ini berfungsi di perangkat seluler), mata tertutup di pojok kiri bawah, Anda akan melihat mata terbuka dan simulasi dimulai. Kedua bersaudara, Bradford dan Bryan Manning, didiagnosis menderita Penyakit Stargardt pada usia muda. Penyakit Stargardt adalah salah satu bentuk degenerasi makula pada mata. Lama kelamaan kedua bersaudara itu akan menjadi buta total. Kunjungi situsnya dan klik mata untuk melihat bagaimana mereka melihatnya.

Jika Anda berada di posisi mereka dan harus menavigasi suatu halaman, Anda pasti ingin memastikan bahwa Anda tahu persis di mana Anda berada sepanjang pengalaman. Cincin fokus memberi Anda kekuatan itu.

Gambar halaman beranda dari situs Two Blind Brothers.

Demo

Demo di bawah ini menunjukkan caranya :focus-visible berfungsi saat ditambahkan ke CSS Anda. Bagian pertama dari video menunjukkan pengalaman saat bernavigasi dengan mouse, bagian kedua menunjukkan bernavigasi hanya dengan keyboard saya. Saya merekam diri saya sendiri juga untuk menunjukkan bahwa saya beralih dari penggunaan mouse ke keyboard.

Video yang menunjukkan cara kerja heuristik browser berdasarkan masukan dan memicu kelas semu yang terlihat fokus.
Video yang menunjukkan cara kerja heuristik browser berdasarkan masukan dan memicu kelas semu yang terlihat fokus.

Browser memperkirakan apa yang harus dilakukan dengan cincin fokus berdasarkan masukan saya (keyboard/mouse), dan kemudian menambahkan cincin fokus ke elemen tersebut. Dalam hal ini, saat saya menavigasi contoh ini dengan keyboard, semuanya menjadi fokus. Saat menggunakan mouse, hanya input yang mendapat fokus dan tombolnya tidak. Jika Anda menghapus :focus-visible, browser akan menerapkan cincin fokus default.

Kode di bawah ini berlaku :focus-visible ke elemen yang dapat difokuskan.

:focus-visible {
  outline-color: black;
  font-size: 1.2em;
  font-family: serif;
  font-weight: bold;
}

Jika Anda ingin menentukan label atau tombol untuk menerima :focus-visible cukup awali kelas dengan input or button masing.

button:focus-visible {
  outline-color: black;
  font-size: 1.2em;
  font-family: serif;
  font-weight: bold;
}

/*** OR ***/

input:focus-visible {
  outline-color: black;
  font-size: 1.2em;
  font-family: serif;
  font-weight: bold;
}

Bantuan

Jika browser tidak mendukung :focus-visible Anda dapat mengambil langkah mundur untuk menangani interaksi tersebut. Kode di bawah ini berasal dari Taman Bermain MDN. Anda dapat menggunakan @support sesuai aturan atau “permintaan fitur” untuk memeriksa dukungan. Satu hal yang perlu diingat, aturan harus ditempatkan di bagian atas kode atau disarangkan di dalam grup aturan lain.

<button class="button with-fallback" type="button">Button with fallback</button>
<button class="button without-fallback" type="button">Button without fallback</button>
.button {
  margin: 10px;
  border: 2px solid darkgray;
  border-radius: 4px;
}

.button:focus-visible {
  /* Draw the focus when :focus-visible is supported */
  outline: 3px solid deepskyblue;
  outline-offset: 3px;
}

@supports not selector(:focus-visible) {
  .button.with-fallback:focus {
    /* Fallback for browsers without :focus-visible support */
    outline: 3px solid deepskyblue;
    outline-offset: 3px;
  }
}

Masalah Aksesibilitas Lebih Lanjut

Masalah aksesibilitas yang perlu diingat saat mengembangkan pengalaman Anda:

  • Pastikan warna yang Anda pilih untuk indikator fokus Anda, jika ada, masih dapat diakses sesuai dengan informasi yang didokumentasikan dalam WCAG 2.2 Kontras Non-teks (Level AA)
  • Kelebihan kognitif dapat menyebabkan kesusahan pengguna. Pastikan untuk menjaga konsistensi gaya pada berbagai elemen interaktif

Dukungan Browser

Data dukungan browser ini berasal dari kaniuse, yang lebih detail. Angka menunjukkan bahwa browser mendukung fitur pada versi tersebut dan lebih tinggi.

Desktop

Chrome Firefox IE Tepi Safari
86 4* Tidak 86 15.4

Ponsel / Tablet

android-chrome Firefox Android Android iOS Safari
123 124 123 15.4
tempat_img

Intelijen Terbaru

tempat_img

Hubungi kami

Hai, yang di sana! Apa yang bisa saya bantu?