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?


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/


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;
}

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;

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.

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


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.


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;
}

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;
}

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;
}

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>

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;}

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.


0

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

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

Dan

 *{
     outline: none;   
   }
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.