Hapus Safari / Chrome textinput / textarea glow

337

Saya bertanya-tanya apakah mungkin untuk menghapus cahaya biru dan kuning default ketika saya mengklik input teks / area teks menggunakan CSS?

Alec Smart
sumber
6
@Steve, alasan lain untuk menonaktifkannya adalah jika Anda ingin efek cahaya bekerja di semua browser dengan menggunakan: fokus alih-alih gaya garis yang tidak didukung.
Langdon
90
Benar-benar menjengkelkan ketika orang memulai percakapan filosofis tentang apakah sesuatu itu "hal yang benar untuk dilakukan" ketika pertanyaannya adalah masalah teknis.
tim
2
Saya membuat spreadsheet online, Steve, jadi akan sesuai untuk penggunaan saya. Tergantung, tetapi jika itu hanya bentuk sederhana maka Anda harus meninggalkan garis besar sebagaimana adanya.
william44isme
4
Saya pikir itu sangat ok untuk menonaktifkannya dan membuat kustom: efek fokus dengan css ...
ithil
Juga, mengetahui cara menonaktifkan sesuatu tidak berarti itu tidak dapat dipulihkan. Siapa pun yang bekerja untuk klien mana pun tahu bahwa mereka mungkin ingin melihat sesuatu dirender satu arah dan kemudian beralih kembali ke cara asli / standar. Mengajar mereka tentang aksesibilitas tidak akan mengubah keinginan itu atau membuat orang bahagia.
JakeGould

Jawaban:

623
textarea, select, input, button { outline: none; }

Meskipun, telah diperdebatkan bahwa menjaga cahaya / garis sebenarnya bermanfaat untuk aksesibilitas karena dapat membantu pengguna melihat Elemen mana yang saat ini fokus.

Anda juga dapat menggunakan elemen pseudo ': fokus' untuk hanya menargetkan input ketika pengguna memilihnya.

Demo: https://jsfiddle.net/JohnnyWalkerDesign/xm3zu0cf/

ajm
sumber
2
Sempurna, terima kasih banyak. Juga bertanya-tanya, dapatkah saya menghapus opsi ukuran teks juga (di kanan bawah textarea)?
Alec Smart
3
+1 untuk hati-hati; tolong untuk menghindari melakukan apa pun yang melanggar harapan pengguna tentang kinerja platform mereka; Anda sebenarnya dapat merusak produktivitas mereka dan membuat situs web Anda lebih sulit untuk digunakan.
Rob
6
Hapus opsi ubah ukuran chrome / safari saya dengan risiko Anda sendiri! Saya merasa ini sangat berguna, bahkan sangat diperlukan di beberapa situs.
JeeBee
5
untuk menyingkirkan gagang pengubahan ukuran: resize: tidak ada;
Daniel
22
bayangan kotak: tidak ada;
styks
92

Efek ini dapat terjadi pada elemen non-input juga. Saya telah menemukan karya-karya berikut sebagai solusi yang lebih umum

:focus {
  outline-color: transparent;
  outline-style: none;
}

Pembaruan: Anda mungkin tidak harus menggunakan :focuspemilih. Jika Anda memiliki elemen, katakanlah <div id="mydiv">stuff</div>, dan Anda mendapatkan cahaya luar pada elemen div ini, cukup gunakan seperti biasa:

#mydiv {
  outline-color: transparent;
  outline-style: none;
}
Carl W
sumber
Ini berfungsi, misalnya untuk <button>elemen, yang tidak terlalu mendapat manfaat dari fokus cahaya karena sebagian besar Anda tetap mengkliknya.
kasimir
1
Jawaban yang diterima tidak berfungsi untuk saya di Chrome di OSX. Solusi ini berhasil.
Bart
Juga menggunakan teknik ini, Anda dapat mempertahankan fokus, tetapi mendefinisikan kembali nilai garis menjadi warna solid pilihan Anda, dll. Agar sesuai dengan gaya situs Anda jika menghapusnya sama sekali tidak sepenuhnya memuaskan.
Neil Monroe
1
Tidak berfungsi untuk saya pada versi terbaru chrome45.0.2454.101 m
J86
Jawaban dari @ Carl-W ini tidak boleh diabaikan! - Ini berguna saat menggunakan jQuery untuk menautkan ke jangkar yang merupakan div. Saya memuat ulang iframe di div, kemudian secara manual pergi ke jangkar tanpa memuat ulang. Itu akan menggulir ke bawah halaman ke jangkar, tetapi seluruh div memiliki cahaya luar biru. Menambahkan CSS ini pada elemen div, dan itu berhasil! - CATATAN: Saya tidak menggunakan :focusuntuk pemilih, saya hanya meletakkan outline-colordan outline-stylepada css div saya.
Wade
13

Tentang pengubahan ukuran teks di browser berbasis webkit:

Pengaturan max-height dan max-width pada textarea tidak akan menghapus pegangan ukuran visual. Mencoba:

resize: none;

(dan ya saya setuju dengan "mencoba untuk menghindari melakukan apa pun yang merusak harapan pengguna", tetapi kadang-kadang itu masuk akal, yaitu dalam konteks aplikasi web)

Untuk menyesuaikan tampilan dan nuansa elemen formulir webkit dari awal:

-webkit-appearance: none;
Thomas Maas
sumber
3
Ini juga mungkin untuk memungkinkan mengubah ukuran dalam satu arah saja, yang mungkin memperbaiki interaksi dengan beberapa layout tanpa menonaktifkan sepenuhnya: nilai yang mungkin untuk mengubah ukuran adalah none, both, horizontal, vertical, dan inherit.
Boann
Saya suka solusi yang ditawarkan di sini dengan '-webkit-appearance: none;' - Menghapus SEMUA penataan dari elemen input, sehingga Anda dapat menata style sesuai kebutuhan. Terima kasih!
hanazair
Saya tidak tahu mengapa ini memiliki banyak upvotes, ini bukan jawaban untuk pertanyaan sama sekali.
paddotk
7

Carl W :

Efek ini dapat terjadi pada elemen non-input juga. Saya telah menemukan karya-karya berikut sebagai solusi yang lebih umum

:focus {
  outline-color: transparent;
  outline-style: none;
}

Saya akan menjelaskan ini:

  • :focusberarti menata elemen yang fokus. Jadi kami menata elemen dalam fokus.
  • outline-color: transparent; berarti cahaya biru transparan.
  • outline-style: none; melakukan hal yang sama.
MineCMD
sumber
5

Saya mengalami ini pada acara divyang memiliki klik dan setelah 20 pencarian, saya menemukan potongan ini yang menyelamatkan hari saya.

-webkit-tap-highlight-color: rgba(0,0,0,0);

Ini menonaktifkan penyorotan tombol default di browser mobile webkit

Michael
sumber
4

Ini adalah solusi untuk orang yang peduli dengan aksesibilitas .

Tolong, jangan gunakan outline:none;untuk menonaktifkan garis fokus. Anda mematikan aksesibilitas web jika melakukan ini. Ada cara yang dapat diakses untuk melakukan ini.

Lihat artikel ini yang telah saya tulis untuk menjelaskan cara menghapus perbatasan dengan cara yang dapat diakses.

Ide singkatnya adalah untuk hanya menunjukkan batas garis ketika kami mendeteksi pengguna keyboard. Setelah pengguna mulai menggunakan tetikusnya, kami menonaktifkan garis besarnya. Hasilnya, Anda mendapatkan yang terbaik dari keduanya.

Wim Mostmans
sumber
2

Jika Anda ingin menghapus cahaya dari tombol di Bootstrap (yang menurut saya tidak buruk), Anda memerlukan kode berikut:

.btn:focus, .btn:active:focus, .btn.active:focus{
  outline-color: transparent;
  outline-style: none;
}
Kyle S
sumber
Terima kasih. .btn:active:focusdiperlukan untuk menghapus cahaya sementara sebenarnya menahan tombol.
homerjam
2

Solusi ini bekerja untuk saya.

input:focus {
    outline: none !important;
    box-shadow: none !important;
}
Keras
sumber
1

beberapa kali itu terjadi tombol juga kemudian gunakan di bawah ini untuk menghapus garis luar

input:hover
input:active, 
input:focus, 
textarea:active,
textarea:hover,
textarea:focus, 
button:focus,
button:active,
button:hover
{
    outline:0px !important;
}
vamsikrishnamannem
sumber
0
<select class="custom-select">
        <option>option1</option>
        <option>option2</option>
        <option>option3</option>
        <option>option4</option>
</select>

<style>
.custom-select {
        display: inline-block;
        border: 2px solid #bbb;
        padding: 4px 3px 3px 5px;
        margin: 0;
        font: inherit;
        outline:none; /* remove focus ring from Webkit */
        line-height: 1.2;
        background: #f8f8f8;

        -webkit-appearance:none; /* remove the strong OSX influence from Webkit */

        -webkit-border-radius: 6px;
        -moz-border-radius: 6px;
        border-radius: 6px;
    }
    /* for Webkit's CSS-only solution */
    @media screen and (-webkit-min-device-pixel-ratio:0) { 
        .custom-select {
            padding-right:30px;    
        }
    }

    /* Since we removed the default focus styles, we have to add our own */
    .custom-select:focus {
        -webkit-box-shadow: 0 0 3px 1px #c00;
        -moz-box-shadow: 0 0 3px 1px #c00;
        box-shadow: 0 0 3px 1px #c00;
    }

    /* Select arrow styling */
    .custom-select:after {
        content: "▼";
        position: absolute;
        top: 0;
        right: 0;
        bottom: 0;
        font-size: 60%;
        line-height: 30px;
        padding: 0 7px;
        background: #bbb;
        color: white;

        pointer-events:none;

        -webkit-border-radius: 0 6px 6px 0;
        -moz-border-radius: 0 6px 6px 0;
        border-radius: 0 6px 6px 0;
    }
</style>
criss_ae
sumber
0

Saya menemukan itu membantu untuk menghapus garis pada jenis "pintu geser" tombol input, karena garis besar tidak menutupi "tutup" kanan dari gambar pintu geser membuat keadaan fokus terlihat sedikit miring.

input.slidingdoorbutton:focus { outline: none;}
Finelli yang kaya
sumber
0

Saya hanya perlu menghapus efek ini dari bidang input teks saya, dan saya tidak bisa mendapatkan teknik lain untuk bekerja dengan benar, tetapi inilah yang bekerja untuk saya;

input[type="text"], input[type="text"]:focus{
            outline: 0;
            border:none;
            box-shadow:none;

    }

Diuji di Firefox dan di Chrome.

Martyn Shutt
sumber
0

Tentu! Anda dapat menghapus batas biru juga dari semua elemen HTML menggunakan *

*{
    outline-color: transparent;
    outline-style: none;
  }

Dan

 *{
     outline: none;   
   }
Santosh Khalse
sumber