Saya sedang mengerjakan halaman web, dan saya ingin <button>
tag bergaya khusus . Jadi dengan CSS, aku berkata: border: none
. Sekarang ini berfungsi dengan baik di safari, tetapi di chrome, ketika saya mengklik salah satu tombol, itu menempatkan perbatasan biru yang mengganggu di sekitarnya. Saya berpikir button:active { outline: none }
atau button:focus { outline:none }
akan bekerja, tetapi tidak juga. Ada ide?
Ini terlihat seperti sebelum diklik (dan bagaimana saya ingin tetap terlihat setelah diklik):
Dan ini adalah perbatasan yang saya bicarakan:
Inilah CSS saya:
button.launch {
background-color: #F9A300;
border: none;
height: 40px;
padding: 5px 15px;
color: #ffffff;
font-size: 16px;
font-weight: 300;
margin-top: 10px;
margin-right: 10px;
}
button.launch:hover {
cursor: pointer;
background-color: #FABD44;
}
button.change {
background-color: #F88F00;
border: none;
height: 40px;
padding: 5px 15px;
color: #ffffff;
font-size: 16px;
font-weight: 300;
margin-top: 10px;
margin-right: 10px;
}
button.change:hover {
cursor: pointer;
background-color: #F89900;
}
button:active {
outline: none;
border: none;
}
css
google-chrome
eshellborn
sumber
sumber
outline: none
seperti ini kecuali Anda siap mengganti kehilangan dalam aksesibilitas. Lihat situs web ini: outlinenone.comJawaban:
Melakukan hal ini tidak disarankan karena akan mengurangi aksesibilitas situs Anda; untuk info lebih lanjut, lihat posting ini .
Yang mengatakan, jika Anda bersikeras, CSS ini harus bekerja:
Lihat atau JSFiddle: http://jsfiddle.net/u4pXu/
Atau dalam cuplikan ini:
sumber
outline: none;
atau tidak penting?button:focus{ outline-color: #A75000 }
... alih-alih menyembunyikan indikator Anda mengubahnya menjadi oranye gelap yang sesuai dengan gaya.Tunggu! Ada alasan untuk garis jelek itu!
Sebelum menghapus garis biru jelek itu, Anda mungkin ingin mempertimbangkan aksesibilitas . Secara default, garis biru itu ditempatkan pada elemen yang bisa fokus. Ini agar pengguna dengan masalah aksesibilitas dapat memfokuskan tombol itu dengan menabraknya. Beberapa pengguna tidak memiliki keterampilan motorik untuk menggunakan mouse dan hanya menggunakan keyboard (atau perangkat input lain) untuk interaksi komputer. Saat Anda menghapus garis biru, tidak ada lagi indikator visual tentang elemen apa yang difokuskan. Jika Anda akan menghapus garis biru, Anda harus menggantinya dengan jenis indikasi visual lain bahwa tombolnya terfokus.
Kemungkinan Solusi: Gelapkan Tombol saat fokus
Untuk contoh di bawah, garis biru Chrome pertama kali dihapus dengan menggunakan
button:focus { outline:0 !important; }
Berikut adalah tombol Bootstrap dasar Anda seperti yang muncul secara normal:
Berikut adalah tombol ketika mereka menerima fokus:
Di sini tombol saat ditekan:
Seperti yang Anda lihat, tombolnya sedikit lebih gelap ketika menerima fokus. Secara pribadi, saya akan merekomendasikan untuk membuat tombol fokus lebih gelap sehingga ada perbedaan yang sangat mencolok antara keadaan fokus dan keadaan normal tombol.
Ini bukan hanya untuk pengguna yang dinonaktifkan
Membuat situs Anda lebih mudah diakses adalah sesuatu yang sering diabaikan tetapi dapat membantu menciptakan pengalaman yang lebih produktif di situs web Anda. Ada banyak pengguna normal yang menggunakan perintah keyboard untuk bernavigasi melalui situs web untuk tetap menggunakan keyboard.
sumber
Saya hanya menghapus garis besar dari semua tag di halaman dengan memilih semua dan menerapkan garis besar: tidak ada untuk semuanya :)
Seperti yang disebutkan bagofcole, Anda mungkin perlu menambahkan! Penting juga, sehingga gayanya akan terlihat seperti ini:
sumber
Dalam contoh saya tentang masalah ini saya harus menentukan
box-shadow: none
sumber
box-shadow
Jangan lupa
!important
deklarasi, untuk hasil yang lebih baikAturan yang memiliki properti! Penting akan selalu diterapkan di mana pun aturan itu muncul dalam dokumen CSS.
sumber
outline:0 !important
UX buruk dan praktik dev buruk. Jika Anda melakukan ini, pastikan Anda melakukan sesuatu yang lain untuk menunjukkan posisi fokus (seperti mengubah warna latar elemen).Menghapus
outline
itu mengerikan untuk aksesibilitas! Idealnya, cincin fokus hanya muncul ketika pengguna berniat untuk menggunakan keyboard .Gunakan : fokus-terlihat . Saat ini proposal W3C untuk menata fokus hanya keyboard menggunakan CSS, dan didukung di Firefox ( caniuse ). Sampai browser besar lainnya mendukungnya, Anda dapat menggunakan polyfill yang kuat ini .
Saya juga menulis posting yang lebih rinci kalau-kalau Anda membutuhkan info lebih lanjut.
sumber
outline
seperti itu, asalkan: fokus negara dibuat jelas terlihat melalui beberapa cara lain, sepertiborder,
background-color
,box-shadow
, dll:-moz-focusring
, tetapi bertentangan dengan apa yang dikatakan oleh dokumen, itu tidak membedakan antara klik dan fokus tab. Di Chrome, mulai sekarang Anda harus mengaktifkan flag tertentu agar dapat berfungsiTambahkan ini dalam file CSS Anda.
sumber
Gunakan ini:
atau ini jika itu tidak berhasil:
Ini berfungsi untuk saya (setidaknya FF dan Chrome). Alih-alih menargetkan
:focus
negara, hanya menargetkan:active
negara dan yang akan menghapus sorotan mencolok estetika di browser Anda ketika pengguna mengklik tautan. Tapi itu masih akan mempertahankan status fokus ketika pengguna dengan cacat tab atau shift-tab melalui halaman. Kedua belah pihak senang. :)sumber
untuk masalah ini:
Gunakan ini:
hasil:
sumber
Bagi siapa pun yang menggunakan Bootstrap dan mengalami masalah ini, mereka menggunakan: active: focus serta just: active dan: focus sehingga Anda akan memerlukan:
Mudah-mudahan menyelamatkan seseorang beberapa saat untuk menemukan yang keluar, membenturkan kepalaku sedikit bertanya-tanya mengapa hal sederhana seperti itu tidak berhasil.
sumber
Sebagian besar solusi tidak akan berfungsi jika Anda menggunakan Bootstrap 4.1 dan mungkin versi lainnya. Setelah banyak membenturkan kepala, saya menemukan Anda perlu menerapkan kelas shadow-none :
sumber
Inilah yang bekerja untuk saya:
sumber
Perbaikan untuk Chrome dan browser lainnya
sumber
coba kode ini untuk semua elemen yang memiliki masalah batas biru
atau
sumber
Cara lain untuk memecahkan masalah aksesibilitas yang belum disebutkan di sini adalah melalui sedikit Javascript . Kredit pergi dari blogpost penuh wawasan ini dari hackernoon: https://hackernoon.com/removing-that-ugly-focus-ring-and-keeping-it-too-6c8727fefcd2
Pendekatan di sini sangat sederhana namun efektif: Menambahkan kelas ketika orang-orang mulai menggunakan tab-key untuk menavigasi halaman (dan secara opsional menghapusnya ketika beralih ke mouse lagi. Kemudian Anda dapat menggunakan kelas ini untuk menampilkan garis fokus atau tidak .
sumber
Saya menghadapi masalah yang sama jadi saya menggunakan CSS- sederhana
sumber
Jika Anda ingin menghapus efek yang sama pada input, Anda bisa menambahkan kode berikut ini juga tombol.
sumber
Sampai semua browser modern akan mulai mendukung css-selector : focus-visible ,
cara termudah dan mungkin terbaik untuk menghemat aksesibilitas adalah dengan menghapus fokus rumit ini hanya untuk pengguna mouse dan menyimpannya untuk pengguna keyboard :
1.Gunakan polyfill mungil ini (sekitar 10kb): https://github.com/WICG/focus-visible
2.Tambahkan kode selanjutnya di suatu tempat di css Anda:
Dukungan browser css4-selector: fokus-terlihat sekarang sangat lemah:
https://caniuse.com/#search=focus-visible
sumber
Cukup tulis
outline:none;
. Tidak perlu menggunakan elemen pseudofocus
sumber
Ini merupakan masalah dalam keluarga Chrome dan telah ada di sana selamanya.
Bug telah muncul https://bugs.chromium.org/p/chromium/issues/detail?id=904208
Itu dapat ditampilkan di sini: https://codepen.io/anon/pen/Jedvwj segera setelah Anda menambahkan perbatasan untuk apa pun seperti tombol (misalnya role = "tombol" telah ditambahkan ke tag misalnya) Chrome mengacaukan dan mengatur status fokus saat Anda mengklik dengan mouse Anda.
Saya sangat merekomendasikan menggunakan perbaikan ini: https://github.com/wicg/focus-visible .
Lakukan saja yang berikut ini
Tambahkan skrip ke html Anda:
atau impor ke file entri utama Anda jika menggunakan webpack atau yang serupa:
lalu letakkan ini di file css Anda:
Anda bisa mengatur:
tetapi jika Anda memiliki banyak pengguna, Anda merugikan mereka yang tidak dapat menggunakan mouse atau mereka yang hanya ingin menggunakan keyboard mereka untuk kecepatan.
sumber
Saya memiliki masalah yang sama dengan bootstrap. Saya memecahkan dengan garis besar dan bayangan kotak
sumber