Cara menghapus fokus di sekitar tombol saat klik

225

Semua tombol saya memiliki highlight di sekitarnya setelah saya mengkliknya. Ini ada di Chrome.

Tidak dipilih Terpilih

<button class="btn btn-primary btn-block">
    <span class="icon-plus"></span> Add Page
</button>

Saya menggunakan Bootstrap dengan tema, tapi saya cukup yakin bukan itu: Saya memperhatikan ini sebelumnya di proyek lain.

Itu hilang jika saya menggunakan <a>tag bukan <button>. Mengapa? Jika saya ingin menggunakan <button>bagaimana saya membuatnya pergi?

Sean Clark Hess
sumber
12
garis besar: 0; mungkin menarik bagi Anda
Wiggler Jtag
Apakah ada kelas yang ditambahkan setelah klik?
Kuzgun
1
garis besar: 0 tampaknya tidak membantu, juga penampilan webkit
Sean Clark Hess
7
28 jawaban semua menyarankan metode yang berbeda untuk mengatasi masalah ini adalah bukti keadaan menyedihkan dari pengembangan web front end saat ini.
deltanine
3
Orang-orang yang menganggap fitur aksesibilitas ini menjadi masalah adalah bukti keadaan menyedihkan dari pengembangan web front-end saat ini.
Quentin

Jawaban:

292

Saya menemukan Q dan A ini di halaman lain, dan mengesampingkan gaya fokus tombol bekerja untuk saya. Masalah ini mungkin khusus untuk MacOS dengan Chrome.

.btn:focus {
  outline: none;
  box-shadow: none;
}

Perhatikan bahwa ini memiliki implikasi untuk aksesibilitas dan tidak disarankan hingga Anda memiliki status fokus yang konsisten dan baik untuk tombol dan input Anda. Sesuai komentar di bawah, ada pengguna di luar sana yang tidak dapat menggunakan mouse.

jerimiah797
sumber
33
Saya juga memikirkan hal ini, tetapi tidak menghapus garis memiliki masalah aksesibilitas?
silvenon
10
Saya kira kita tidak punya pilihan lain. Anda juga dapat menambahkan .btn:active:focuspemilih untuk menghapusnya dari status aktif juga.
silvenon
45
Menghapus garis besar dari sebuah tombol jelas buruk untuk aksesibilitas. Ada pengguna yang tidak dapat mengontrol mouse, dan harus dapat menabrak halaman dengan keyboard. Menghapus garis besar membuatnya sangat sulit. Mungkin lebih baik untuk mencegah tombol menerima fokus pada klik.
Murphy Randle
Untuk pelancong masa depan, kode ini sepenuhnya menggantikan semua gaya pada semua status tombol untuk tombol default (tidak semua tombol):.btn-default, .btn-default:hover, .btn-default:active, .btn-default:active:focus, .btn-default:visited, .btn-default:focus { color: #dcdcdc; background-color: #232323; outline: none; }
Geordie
1
jika menggunakan variabel bootstrap bawaan, seseorang dapat mencapainya dengan mengatur kedua vars ini menjadi: $ btn-focus-width: 0; $ btn-focus-box-shadow: tidak ada;
Pelatihan peluru
109

Anda menginginkan sesuatu seperti:

<button class="btn btn-primary btn-block" onclick="this.blur();">...

Metode .blur () benar menghapus sorotan fokus dan tidak mengacaukan gaya Bootstraps.

cshotton
sumber
9
Ini menampilkan garis besar sesaat, yang masih
merusaknya
2
Saya tidak melihat flicker jika saya memicu acara fokus daripada acara klik.
Charles
2
Ini berhasil hebat! Apakah akan ada masalah potensial jika saya mencoba melampirkan pengendali event click () yang berbeda (yaitu kode yang dieksekusi ketika Anda mengklik tombol said) ke tombol yang sama?
Nils_e
4
Jika ada orang di sini yang bertanya-tanya apakah ini bekerja di bootstrap v4, ya. Jawabannya masih berlaku pada 2018, tepuk tangan!
jatuh
4
Apakah aksesibilitas-OK, dibandingkan dengan pertanyaan terpilih?
CharlesM
47

pemahaman saya adalah bahwa fokus pertama kali diterapkan mengikuti onMouseDownacara, sehingga memanggil e.preventDefault()di onMouseDowndapat menjadi solusi yang bersih tergantung pada kebutuhan Anda. Ini tentu saja merupakan solusi ramah aksesibilitas, tetapi jelas itu menyesuaikan perilaku klik mouse yang mungkin tidak kompatibel dengan proyek web Anda.

Saat ini saya menggunakan solusi ini (dalam suatu react-bootstrapproyek) dan saya tidak menerima flicker fokus atau mempertahankan fokus tombol setelah klik, tetapi saya masih dapat menabrak fokus saya dan secara visual memvisualisasikan fokus tombol yang sama.

pjs
sumber
2
Iya. solusi Anda berhasil. Terima kasih atas tipnya. Inilah biola untuk solusinya. Tapi itu membutuhkan penangan javascript untuk dilampirkan ke setiap tombol. Alangkah baiknya jika kita dapat mencapai ini melalui solusi CSS saja.
Galeel Bhasha
1
Saya pikir orang mengharapkan fokus untuk pergi pada elemen ketika Anda mengkliknya, dan solusi ini mencegah hal itu. Saya sering mengklik elemen dan kemudian pindah sebelum melepaskan mouse untuk memberikan fokus sehingga saya bisa tab dari sana.
Michael Tontchev
7
Bagi siapa pun yang menelusuri cuplikan, ini harus berhasil dan dipertahankan di Klik:onMouseDown={e => e.preventDefault()}
Adam K Dean
1
Ini mencegah spasi dan tombol kembali dari "mengklik" tombol. Mungkin solusi yang lebih lengkap adalah dengan menambahkan kembali ini dengan: onKeyUp={(e) => {if (e.keyCode === 13 || e.keyCode === 32) handleClick()}.
jfbloom22
Anda seharusnya tidak memanggil e.preventDefault () di dalam onKeyUpacara tersebut. Ternyata jika Anda melakukan itu, maka tombol tetap fokus setelah menekan tombol spasi atau tombol kembali dan tab atau mengklik di mana saja.
jfbloom22
30

Tidak percaya tidak ada yang memposting ini.

Gunakan label, bukan tombol.

<label type="button" class="btn btn-primary btn-block">
<span class="icon-plus"></span> Add Page
</label>

Biola

Adam McKenna
sumber
11
Ini berfungsi dengan baik untuk sebagian besar pengguna, tetapi metode ini tidak ramah untuk menyaring pembaca, atau untuk keyboard dan akan meninggalkan pengguna tunanetra, dan pengguna dengan keterampilan motorik yang dikompromikan, tidak dapat berinteraksi dengan tombol.
Murphy Randle
8
1. Ganti label dengan tag <a>. sehingga dapat diakses melalui keyboard. 2. tambahkan aria-role = "tombol" untuk meningkatkan aksesibilitas bagi pengguna pembaca layar. memperbarui Fiddle
Galeel Bhasha
solusi yang bagus, membantu saya, tetapi entah bagaimana tidak bekerja untuk directive angle, bahkan dengan pembungkus, misalnya<a class="btn"><my-directive/></a>
ya_dimon
2
Label benar-benar dilewati untuk pengguna non-tikus ketika menabrak, buruk untuk aksesibilitas
Felipe
1
Dalam Bootstrap 4 tampaknya mengubah tampilan tombol.
Jason Kim
30

Meskipun mudah untuk hanya menghapus garis besar untuk semua tombol yang difokuskan (seperti dalam jawaban user1933897 ), tetapi solusi itu buruk dari sudut pandang aksesibilitas (misalnya, lihat Berhenti Bergaul dengan Garis Besar Fokus Default Browser )

Di sisi lain, mungkin tidak mungkin meyakinkan browser Anda untuk berhenti mendisain tombol yang diklik sebagai fokus jika berpikir bahwa itu fokus setelah Anda mengkliknya (Saya sedang melihat Anda, Chrome di OS X).

Jadi apa yang bisa kita lakukan? Beberapa pilihan muncul di benak saya.

1) Javascript (jQuery): $('.btn').mouseup(function() { this.blur() })

Anda menginstruksikan browser Anda untuk menghapus fokus di sekitar tombol apa pun segera setelah tombol diklik. Dengan menggunakan mouseupalih-alih clickkami menjaga perilaku default untuk interaksi berbasis keyboard ( mouseuptidak dipicu oleh keyboard).

2) CSS: .btn:hover { outline: 0 !important }

Di sini Anda mematikan garis besar hanya untuk tombol melayang . Jelas itu tidak ideal, tetapi mungkin cukup dalam beberapa situasi.

Alexis
sumber
4
Angka 1 adalah tip yang bermanfaat. Ini akan menonaktifkan fokus ketika tombol tidak ditekan, namun akan tetap ditampilkan saat ditekan. Saya telah menonaktifkan fokus pada elemen aktif yang diklik dengan :active:focus {outline:none;}.
tentu saja
Fungsi steno yang mengikat pendengar acara tidak digunakan lagi dalam jQuery, jadi lebih baik jika Anda menggunakan .on('mouseup', function() { ... })alih-alih.mouseup()
Crazy Redd
16

Ini berhasil untuk saya. Saya membuat kelas khusus yang menimpa CSS yang diperlukan.

.custom-button:focus {
    outline: none !important;
    border: none !important;
    -webkit-box-shadow: none !important;
    box-shadow: none !important;
}

masukkan deskripsi gambar di sini

-Webkit-box-shadow akan berfungsi untuk Chrome dan browser safari.

men_aka
sumber
bekerja untuk saya tetapi saya harus menghapus border: none !important;tombol untuk mempertahankan dimensi yang sama
Emeka Mbah
1
Saya ingin menghapus fokus onClick di atas jawaban tidak bekerja tetapi "kotak-bayangan: tidak ada! Penting;" ini berhasil buat saya, terima kasih @Menaka
Zaif Warm
11

Ini bekerja untuk saya, solusi lain yang tidak disebutkan. Lemparkan saja ke event klik ...

$(this).trigger("blur");

Atau telepon dari acara / metode lain ...

$(".btn_name").trigger("blur");
rampok
sumber
Masalahnya adalah ketika pengguna keyboard "mengklik" tombol (dengan memfokuskannya lalu menekan spasi) ia kehilangan fokus. Anda kemudian harus melakukan tab semua jalan kembali ke manapun Anda berada. 😡
Tamlyn
8

Jika Anda menggunakan aturan :focus { outline: none; }untuk menghapus garis besar, tautan atau kontrol akan menjadi fokus tetapi tanpa indikasi fokus untuk pengguna keyboard. Metode untuk menghapusnya seperti dengan JS onfocus="blur()"bahkan lebih buruk dan akan mengakibatkan pengguna keyboard tidak dapat berinteraksi dengan kontrol.

Peretasan yang dapat Anda gunakan, yang semacam OK , termasuk menambahkan :focus { outline: none; }aturan ketika pengguna berinteraksi dengan mouse dan menghapusnya lagi jika interaksi keyboard terdeteksi. Lindsay Evans telah membuat lib untuk ini: https://github.com/lindsayevans/outline.js

Tetapi saya lebih suka mengatur kelas pada html atau tag tubuh. Dan memiliki kontrol dalam file CSS kapan harus menggunakan ini.

Misalnya (penangan event sebaris hanya untuk tujuan demonstrasi):

<html>
<head>
<style>
  a:focus, button:focus {
    outline: 3px solid #000;
  }
  .no-focus a, .no-focus button {
    outline: none;
  } 
</style>
</head>
<body id="thebody" 
onmousedown="document.getElementById('thebody').classList.add('no-focus');"
onkeydown="document.getElementById('thebody').classList.remove('no-focus');">
    <p>This her is <a href="#">a link</a></p>   
    <button>Click me</button>
</body>
</html>

Saya memang menulis Pena: http://codepen.io/snobojohan/pen/RWXXmp

Namun waspadalah ada masalah kinerja. Hal ini memaksa pengecatan ulang setiap kali pengguna beralih antara mouse dan keyboard. Lebih lanjut tentang Menghindari Cat yang Tidak Perlu http://www.html5rocks.com/en/tutorials/speed/unnecessary-paints/

snobojohan
sumber
6

Saya telah memperhatikan hal yang sama dan meskipun itu benar-benar mengganggu saya, saya percaya tidak ada cara yang tepat untuk menangani ini.

Saya akan merekomendasikan terhadap semua solusi lain yang diberikan karena mereka membunuh aksesibilitas tombol sepenuhnya, jadi sekarang, ketika Anda tab ke tombol, Anda tidak akan mendapatkan fokus yang diharapkan.

Ini harus dihindari!

.btn:focus {
  outline: none;
}
Oscar Bolaños
sumber
Saya tidak berpikir ini salah, karena Anda masih memiliki tombol kilat pada sedikit berbeda ketika fokus, sehingga bahkan pengguna keyboard masih bisa mengenalinya. Tapi ini tidak cukup, karena Anda masih akan mendapatkan bingkai perbatasan ketika Anda menekan dan menahan tombol kiri mouse
apocalypz
6

Saya menemukan solusinya. ketika kita fokus, bootstrap menggunakan bayangan kotak, jadi kita cukup menonaktifkannya (tidak cukup reputasi, tidak dapat mengunggah gambar :().

saya menambahkan

.btn:focus{
    box-shadow:none !important;
}

berhasil.

toffee
sumber
6

OPSI 1: Gunakan :focus-visiblepseudo-class

The :focus-visiblepseudo-class dapat digunakan untuk membunuh garis tak sedap dipandang dan fokus cincin pada tombol dan berbagai elemen untuk pengguna yang tidak menavigasi melalui keyboard (yaitu, melalui sentuhan atau klik mouse).

/** 
 * The default focus style is likely provided by Bootstrap or the browser
 * but here we override everything else with a visually appealing cross-
 * browser solution that works well on all focusable page elements
 * including buttons, links, inputs, textareas, and selects.
 */
*:focus { 
  outline: 0 !important;
  box-shadow:
    0 0 0 .2rem #fff, /* use site bg color to create whitespace for faux focus ring */
    0 0 0 .35rem #069 !important; /* faux focus ring color */
}

/**
 * Undo the above focused button styles when the element received focus
 * via mouse click or touch, but not keyboard navigation.
 */
*:focus:not(:focus-visible) {
  outline: 0 !important;
  box-shadow: none !important;
}

Peringatan: Pada tahun 2020, :focus-visiblepseudo-class tidak didukung secara luas di seluruh browser . Namun, polyfill sangat mudah digunakan; lihat instruksi di bawah ini.


OPSI 2: Gunakan .focus-visiblepolyfill

Solusi ini menggunakan kelas CSS normal dan bukan pseudo-class yang disebutkan di atas, dan memiliki dukungan browser yang luas karena merupakan polyfill berbasis Javascript resmi .

Langkah 1: Tambahkan dependensi Javascript ke halaman HTML Anda

Catatan: polyfill fokus-terlihat memerlukan polyfill tambahan untuk beberapa browser lama yang tidak mendukung classList :

<!-- place this code just before the closing </html> tag -->
<script src="https://cdn.polyfill.io/v2/polyfill.js?features=Element.prototype.classList"></script>
<script src="https://unpkg.com/focus-visible"></script>

Langkah 2: Tambahkan CSS berikut ke stylesheet Anda

Berikut ini adalah versi modifikasi dari solusi CSS yang didokumentasikan lebih teliti di atas.

/**
 * Custom cross-browser styles for keyboard :focus overrides defaults.
 */
*:focus { 
  outline: 0 !important;
  box-shadow:
    0 0 0 .2rem #fff,
    0 0 0 .35rem #069 !important;
}

/**
 * Remove focus styles for non-keyboard :focus.
 */
*:focus:not(.focus-visible) {
  outline: 0 !important;
  box-shadow: none !important;
}

Langkah 3 (opsional): gunakan kelas 'fokus-terlihat' jika perlu

Jika Anda memiliki item di mana Anda ingin menunjukkan cincin fokus ketika seseorang mengklik atau menggunakan sentuhan, maka tambahkan saja focus-visiblekelas ke elemen DOM.

<!-- This example uses Bootstrap classes to theme a button to appear like
     a regular link, and then add a focus ring when the link is clicked --->
<button type="button" class="btn btn-text focus-visible">
  Clicking me shows a focus box
</button>

Sumber:

Demo:

JamesWilson
sumber
Tetapi jika bahkan Chrome belum mendukungnya, itu mungkin bukan solusi terbaik (untuk saat ini)
Elijah Mock
Apa yang Anda sarankan sebagai gantinya?
JamesWilson
Sembunyikan garis besar seperti jawaban lain katakan sampai solusi ini lebih terstandarisasi
Elijah Mock
Dari bacaan saya tentang hal-hal, jika aksesibilitas menjadi perhatian, menyembunyikan garis besar carte blanche dengan <whatever>:focus { outline: none }adalah ide yang lebih buruk daripada solusi ini. Sebenarnya ada orang-orang di komunitas aksesibilitas yang lebih suka Anda TIDAK PERNAH menghapus garis besar dan sebaliknya membuat semuanya memiliki: gaya fokus (baik garis besar atau bayangan kotak), dan tidak ingin mendukung: fokus-terlihat sampai browser menerapkan cara untuk membiarkan pengguna menentukan preferensi pengguna pada apakah semua item harus fokus atau tidak. Saya suka berpikir: fokus-terlihat adalah media bahagia antara keprihatinan desain dan a11y.
JamesWilson
5

Jika hal di atas tidak berhasil untuk Anda, coba ini:

.btn: focus {outline: none; box-shadow: none; border: 2px solid transparan;}

Seperti yang ditunjukkan oleh user1933897, ini mungkin khusus untuk MacOS dengan Chrome.

aln
sumber
Tetap ini berlaku ketika digunakan bootstrap 4.0- di windows
3gwebtrain
5

Terlambat, tetapi siapa tahu itu bisa membantu seseorang. CSS akan terlihat seperti:

.rhighlight{
   outline: none !important;
   box-shadow:none
}

HTML akan terlihat seperti:

<button type="button" class="btn btn-primary rHighlight">Text</button> 

Dengan cara ini Anda dapat menjaga btn dan perilaku yang terkait.

Stephanie Wyche
sumber
1
element:focus { box-shadow: none; }dihapus garis biru / bayangan.
user435421
3

Saya menyebutkan hal ini dalam komentar di atas, tetapi perlu dicantumkan sebagai jawaban terpisah untuk kejelasan. Selama Anda tidak perlu benar-benar fokus pada tombol, Anda dapat menggunakan acara fokus untuk menghapusnya sebelum dapat menerapkan efek CSS:

$('buttonSelector').focus(function(event) {
    event.target.blur();
});

Ini menghindari flicker yang dapat dilihat saat menggunakan event klik. Ini memang membatasi antarmuka, dan Anda tidak akan bisa menabrak tombol, tetapi itu bukan masalah di semua aplikasi.

Charles
sumber
Ini setengah dari trik saya. Saya menggunakan Bereaksi dan Bereaksi-Bootstrap. Setelah klik, tombol tetap disorot dengan cahaya di sekitar ini. Menambahkan e.target.blur (); menghilangkan cahaya, tetapi tombol tetap warna yang berbeda.
pixelwiz
3

Gaya

.not-focusable:focus {
    outline: none;
    box-shadow: none;
}

Menggunakan

<button class="btn btn-primary not-focusable">My Button</button>
Bogdan Kanteruk
sumber
Bagaimana solusi ini berbeda dari jawaban lainnya?
apaul
2
Hanya ada satu perbedaan kecil - Anda dapat menghapus fokus untuk elemen yang Anda butuhkan dengan menentukan kelas "tidak-fokus" tanpa mengesampingkan perilaku semua tombol, tautan dll.
Bogdan Kanteruk
3

Coba solusi ini untuk menghilangkan batas di sekitar tombol. Tambahkan kode ini di css.

Mencoba

button:focus{
outline:0px;
}

Jika tidak berfungsi, gunakan di bawah ini.

button:focus{
 outline:none !important;
 }
Rana Aalamgeer
sumber
Yang kedua bekerja bahkan dengan tombol React Material UI
Geek Guy
3

Bagi orang yang menginginkan cara css murni untuk melakukan itu:

:focus:not(:focus-visible) { outline: none }

Ini juga bisa berfungsi untuk tautan dan sebagainya, dan bonus, itu menjaga aksesibilitas keyboard. Terakhir itu diabaikan oleh browser yang tidak mendukung: fokus-terlihat

Martin Pedros
sumber
4
Ini hanya akan berfungsi pada Chrome dengan fitur eksperimental yang diaktifkan, sesuai developer.mozilla.org/en-US/docs/Web/CSS/:focus-visible
Justin Kahn
focus-visiblesekarang memiliki polyfill resmi. Jawaban saya stackoverflow.com/a/60219624/413538 pada pertanyaan ini menguraikan tentang bagaimana sebenarnya memahami semua ini.
JamesWilson
2

Kami mengalami masalah serupa dan memperhatikan bahwa Bootstrap 3 tidak memiliki masalah pada tab mereka (di Chrome). Sepertinya mereka menggunakan gaya garis besar yang memungkinkan peramban untuk memutuskan apa yang terbaik untuk dilakukan dan Chrome tampaknya melakukan apa yang Anda inginkan: perlihatkan garis besar ketika fokus kecuali Anda mengklik elemen tersebut.

Dukungan untuk outline-stylesulit dijabarkan karena browser dapat memutuskan apa artinya itu. Terbaik untuk memeriksa di beberapa browser dan memiliki aturan back-back.

TeknoFiend
sumber
2

Solusi lain yang mungkin adalah menambahkan kelas menggunakan pendengar Javascript ketika pengguna mengklik tombol dan kemudian menghapus kelas itu fokus dengan pendengar lain. Ini menjaga aksesibilitas (tabbing terlihat) sambil juga mencegah perilaku unik Chrome dalam mempertimbangkan tombol yang difokuskan saat diklik.

JS:

$('button').click(function(){
    $(this).addClass('clicked');
});
$('button').focus(function(){
    $(this).removeClass('clicked');
});

CSS:

button:focus {
    outline: 1px dotted #000;
}
button.clicked {
    outline: none;
}

Contoh lengkap di sini: https://jsfiddle.net/4bbb37fh/

Seb Woolford
sumber
Gunakan mousedown daripada klik. Pada klik garis muncul ketika mouse ditekan (tanpa melepaskannya) awal.
Vincent Hoch-Drei
2

Ini berhasil, saya harap membantu Anda

.btn:focus, .btn:focus:active {
    outline: none;
}
Дмитрий Будницкий
sumber
.btn: fokus harus memiliki garis besar untuk aksesibilitas (saat
menabrak
2
.btn:focus:active {
  outline: none;
}

ini menghilangkan garis besar pada klik, tetapi tetap fokus saat menabrak (untuk a11y)

yennefer
sumber
Ini hanya menghilangkan garis besar pada mouse ke bawah. Setelah mouse naik, garis besar muncul.
Mata air
2

Ini yang terbaik

.btn-primary.focus, .btn-primary:focus {
-webkit-box-shadow: none!important;
box-shadow: none!important;
}

sumber
1
  .btn:focus,.btn:active, a{
        outline: none !important;
        box-shadow: none;
     }

garis besar ini: tidak ada yang berfungsi untuk tombol dan tag

Milan Panigrahi
sumber
Bagaimana ini menjawab pertanyaan? Silakan tambahkan beberapa penjelasan.
André Kool
1

Tambahkan ini dalam CSS:

*, ::after, ::before {
    box-sizing: border-box;
    outline: none !important;
    border: none !important;
    -webkit-box-shadow: none !important;
    box-shadow: none !important;
}
Gabriel Reis
sumber
1

Saya menemukan solusi cukup tambahkan baris di bawah ini dalam kode css Anda.

button:focus { outline: none }
Manish Kumar Srivastava
sumber
0

Saya baru saja mengalami masalah yang sama pada MacOS dan Chrome saat menggunakan tombol untuk memicu acara "transisi". Jika ada orang yang membaca ini sudah menggunakan pendengar acara, Anda dapat menyelesaikannya dengan menelepon .blur()setelah tindakan Anda.

Contoh:

 nextQuestionButtonEl.click(function(){
    if (isQuestionAnswered()) {
        currentQuestion++;
        changeQuestion();
    } else {
        toggleNotification("invalidForm");
    }
    this.blur();
});

Meskipun jika Anda belum menggunakan pendengar acara, menambahkan satu hanya untuk menyelesaikan ini mungkin menambahkan overhead yang tidak perlu dan solusi gaya seperti jawaban sebelumnya memberikan lebih baik.

jospablos
sumber
0

Anda bisa mengatur tabIndex="-1". Ini akan membuat browser untuk melewati tombol ini ketika Anda TAB melalui kontrol yang dapat fokus.

"Perbaikan" lain yang disarankan di sini, hanya menghapus garis besar fokus, tetapi masih menyisakan tombol. Namun, dari sudut pandang kegunaan, Anda sudah menghapus cahaya, jadi pengguna Anda tidak akan tahu tombol apa yang saat ini fokus.

Di sisi lain, membuat tombol tidak dapat ditabrak memiliki implikasi aksesibilitas.

Saya menggunakannya untuk menghapus garis fokus dari tombol X di bootstrap modal, yang memiliki duplikat tombol "Tutup" di bagian bawah dengan cara apa pun, jadi solusi saya tidak berdampak pada aksesibilitas.

zmekanik
sumber
0

Jika Anda menggunakan browser webkit (dan berpotensi browser yang kompatibel dengan awalan vendor webkit), garis besar itu milik -webkit-focus-ringpseudoclass tombol . Cukup setel outlineke none:

*:-webkit-focus-ring {
  outline: none;
}

Chrome adalah seperti browser webkit, dan efek ini terjadi di Linux juga (bukan hanya MacOS hal, meskipun beberapa gaya Chrome adalah MacOS saja)

Nate Symer
sumber
0

Saya mengalami masalah yang sama menggunakan <a>akting sebagai tombol dan saya menemukan saya kehilangan solusi dengan menambahkan ATTR type="button"membuatnya berperilaku normal untuk saya setidaknya.

<a type="button" class="btn btn-primary">Release Me!</a>

spcsLrg
sumber
The typeatribut seharusnya tidak berpengaruh pada ini, dan buttonadalah nilai yang tidak valid untuk itu. Atribut menerima tipe MIME dan memberi tahu klien jenis data apa yang diharapkan didapat jika mengikuti tautan (mis <a type="application/pdf" ...>.
Quentin
@ Quentin Terima kasih. Ya saya menyadarinya. Saya mulai dengan role="button"tetapi itu tidak berhasil (setelah menggunakan <button>bukan <a>). Implementasi saya secara khusus menuntut <a>dan tidak <button>. Jadi setelah bermain-main, saya menemukan solusi ini (kemungkinan besar bug BS)!
spcsLrg
0

langsung di tag html (dalam skenario di mana Anda mungkin ingin meninggalkan tema bootstrap di tempat lain di desain Anda) ..

contoh untuk dicoba ..

<button style="border: transparent;">
<button style="border: 1px solid black;">

.. dll ,. tergantung pada efek yang diinginkan.

Tidak ada
sumber