Hapus garis dari kotak pilih di FF

97

Apakah mungkin untuk menghapus garis putus-putus yang mengelilingi item yang dipilih dalam elemen pemilihan?

teks alt

Saya telah mencoba menambahkan outlineproperti di CSS tetapi tidak berhasil, setidaknya tidak di FF.

<style>
   select { outline:none; }
</style>

Perbarui
Sebelum Anda melanjutkan dan menghapus garis besarnya, harap baca ini.
http://www.outlinenone.com/

Martin
sumber
tiga bulan yang lalu, saya mencari hal yang sama tetapi dengan tombol radio. Lebih dari lima atau enam solusi berbeda yang saya temukan, tidak ada yang berhasil. Jadi saya curiga Anda tidak bisa melakukan itu. Saya harap saya salah.
Arseni Mourzenko
Saya khawatir itu fakta juga, tapi masih berharap untuk terbukti salah: D
Martin
Apakah sebenarnya ada orang yang bekerja di Mozilla yang menganggap garis putus-putus bodoh itu terlihat bagus? Mengapa ini adalah sesuatu yang harus kita hapus?
billynoah

Jawaban:

74

Saya menemukan solusi, tetapi ini adalah induk dari semua peretasan, semoga ini akan berfungsi sebagai titik awal untuk solusi lain yang lebih kuat. Kelemahannya (menurut saya terlalu besar) adalah bahwa browser apa pun yang tidak mendukung text-shadowtetapi mendukung rgba(IE 9) tidak akan membuat teks kecuali Anda menggunakan perpustakaan seperti Modernizr (tidak diuji, hanya teori).

Firefox menggunakan warna teks untuk menentukan warna batas bertitik. Jadi katakan jika Anda melakukan ...

select {
  color: rgba(0,0,0,0);
}

Firefox akan membuat batas putus-putus menjadi transparan. Tapi tentu saja teks Anda juga akan transparan! Jadi kita harus menampilkan teks tersebut. text-shadowdatang untuk menyelamatkan:

select {
  color: rgba(0,0,0,0);
  text-shadow: 0 0 0 #000;
}

Kami menempatkan bayangan teks tanpa offset dan tanpa blur, sehingga menggantikan teks. Tentu saja peramban lama tidak memahami apa-apa tentang ini, jadi kami harus memberikan penggantian untuk warnanya:

select {
  color: #000;
  color: rgba(0,0,0,0);
  text-shadow: 0 0 0 #000;
}

Ini adalah saat IE9 ikut bermain: ia mendukung rgbatetapi tidak mendukung bayangan teks, jadi Anda akan mendapatkan kotak pilih yang tampaknya kosong. Dapatkan versi Modernizr Anda dengan text-shadowdeteksi dan lakukan ...

.no-textshadow select {
  color: #000;
}

Nikmati.

metode aksi
sumber
Terima kasih sobat, saya akan mencobanya dalam waktu dekat :)
Martin
Satu-satunya solusi yang benar-benar berfungsi (menggunakan FF 20). Selamat!
Gilberto Torrezan
4
Ini harus mengurus setiap FF dan hanya FF:@-moz-document url-prefix() { ::-moz-focus-inner {border: none} select:-moz-focusring { color: transparent; text-shadow: 0px 0px 0px #000; } }
Timo Kähkönen
Apakah ini akan mempengaruhi css di chrome dan browser lain?
Dadhich Sourav
166

Nah, jawaban Duopixel sangat sempurna. Jika kita melangkah lebih jauh, kita bisa membuatnya anti peluru.

select:-moz-focusring {
    color: transparent;
    text-shadow: 0 0 0 #000;
}

Ini dia, hanya berlaku untuk Firefox dan garis bertitik jelek di sekitar opsi yang dipilih hilang.

Fleshgrinder
sumber
1
Menariknya, solusi ini tidak cukup antipeluru sebagai jawaban Duopixel. Jika Anda menggunakan efek transisi dengan kotak pilih Anda (yaitu -moz-transisi), kotak bertitik akan muncul selama transisi, lalu menghilang. Jadi misalnya jika Anda menentukan '-moz-transisi: semua 0.5s kemudahan;', Anda akan melihat kotak kombo selama setengah detik dengan solusi ini, sedangkan Anda tidak akan melihatnya sama sekali dengan jawaban Duopixel. Anda dapat mengatasinya dengan menyetel seluruh elemen pemilihan agar memiliki atribut warna transparan, tetapi Anda tidak akan melihat teks sama sekali saat kotak tidak memiliki fokus.
Jon
1
Edit: di atas harus mengatakan, "... Anda akan melihat kotak bertitik selama setengah detik dengan solusi ini ...". Saya tidak bisa mengedit komentar lagi. Bagaimanapun, 'color: rgba (0,0,0,0);' properti adalah apa yang memperbaiki transisi, dan itu harus dalam elemen pilih; '-moz-focusring' tidak akan berhasil. Juga menariknya, untuk beberapa alasan saya tidak memiliki masalah apa pun di IE9 dan Chrome dengan solusi Duopixel, sehingga hal-hal yang pada akhirnya dia bicarakan dengan Modernizr sama sekali tidak perlu bagi saya.
Jon
Tentu ini akan muncul jika Anda menentukan transisi. Menggunakan alldalam transisi seperti menembak dengan pistol Gatling dengan cepat.
Fleshgrinder
1
Solusi ini atau Duopixel tidak berfungsi di FF 33.0.3 di Mac Mavericks. Alih-alih garis putus-putus, ada garis buram biru.
Timo Kähkönen
1
ini merusak gaya browser pada opsi yang dinonaktifkan - setelah pemilihan difokuskan, gaya tersebut menjadi hitam, bukan teks yang diabu-abukan.
billynoah
19

Berikut adalah solusi kolaborasi untuk memperbaiki masalah gaya dengan kotak pilih Firefox. Gunakan pemilih CSS ini sebagai bagian dari penyetelan ulang CSS biasa Anda.

Kelas menghapus garis sesuai pertanyaan tetapi juga menghapus gambar latar belakang (karena saya biasanya menggunakan panah dropdown kustom dan panah dropdown sistem Firefox saat ini tidak dapat dihapus). Jika menggunakan gambar latar belakang untuk apa pun selain gambar dropdown, cukup hapus garisbackground-image: none !important;

@-moz-document url-prefix() {
    select, select:-moz-focusring, select::-moz-focus-inner {
       color: transparent !important;
       text-shadow: 0 0 0 #000 !important;
       background-image: none !important;
       border:0;
    }
}
Wayne Dunkley
sumber
Apakah ada cara untuk tetap menentukan warna teks opsi menggunakan metode ini?
pengguna1063287
Sebenarnya Anda dapat menghapus panah Firefox yang digunakan di latar belakang PILIH, dengan mengatur properti khusus vendor -moz-appearanceke none.
Emanuele Del Grande
Jawaban lain tidak memiliki select::-moz-focus-innerpemilih penting , membuatnya kurang efektif. Itulah mengapa yang ini mendapatkan ⬆ saya.
Dave Mendarat
select:-moz-focusringbersama dengan color: transparentdan text-shadow: 0 0 0 #000menghapus batas fokus yang mengganggu di Firefox v63
Jason Moore
Catatan: url-prefix (). fxsitecompat.dev/en-CA/docs/2018/… Membaca tautan saya tidak merasa jelas apakah mereka akan menghapusnya atau tidak. Tapi maklum.
pengguna3342816
9

Ini akan menargetkan semua versi firefox

@-moz-document url-prefix() { 
    select {
       color: transparent !important;
       text-shadow: 0 0 0 #000 !important;
    }
}

Anda mungkin ingin menghapus! Penting, jika Anda berencana untuk membuat kerangka muncul di laman lain di situs Anda yang menggunakan lembar gaya yang sama.

Kyzer
sumber
1
Ini harus menjadi jawaban yang dipilih
brandonscript
9

Secara umum, kontrol bentuk tidak mungkin diatur sedemikian rupa hingga tingkat akurasi tersebut. Tidak ada browser yang saya ketahui mendukung berbagai properti yang masuk akal di semua kontrol. Itulah alasan mengapa ada triliunan pustaka JavaScript yang "memalsukan" kontrol bentuk dengan gambar dan elemen HTML lainnya serta meniru fungsi aslinya dengan kode:

http://ryanfait.com/resources/custom-checkboxes-and-radio-buttons/

...

Álvaro González
sumber
Terima kasih, saya rasa saya harus "membuat daftar pilihan saya sendiri" untuk mencapai ini. Sayang sekali kontrol formulir tidak lebih seragam di seluruh browser.
Martin
1
@Martin: ini tidak bisa dibandingkan dengan kontrol upload file yang tidak fleksibel, yang tidak dapat ditata sama sekali di sebagian besar browser. ;)
Arseni Mourzenko
3

<select onchange="this.blur();">

Jika Anda menggunakan ini, perbatasan tetap sampai Anda memilih item dari daftar.

malitta
sumber
2
Sayangnya, solusi ini tidak menghormati pedoman aksesibilitas dan kegunaan. Selain antarmuka TTS untuk pengguna tunanetra, itu melarang navigasi keyboard. Elemen yang difokuskan harus terlihat berbeda dari yang lain, masalah dengan pertanyaan saat ini adalah bahwa Firefox tidak membiarkan Anda memutuskan caranya.
Emanuele Del Grande
1

Cobalah salah satu dari ini:

a:active {
 outline: none;
 -moz-outline: none;
}

a {
-moz-user-focus: none;
}

Referensi

Ikan lele
sumber
6
Terima kasih atas usahanya, tetapi sayangnya itu tidak berhasil. Mungkin ini bekerja pada sebuah aelemen, tetapi tidak bekerja pada sebuah selectelemen.
Martin
1

Inilah solusinya

:focus {outline:none;}
::-moz-focus-inner {border:0;}
Faizan
sumber
1
Diuji. Tidak berhasil. Firefox mengenali properti ini tetapi tampaknya tidak melakukan apa-apa. Sudah mencoba mengaturnya 10px solid reddan saya tidak dapat menemukan di mana itu muncul.
mpen
Ini benar-benar berhasil untuk saya ketika semua jawaban yang memiliki suara lebih tinggi tidak.
Tashows
0

Hapus garis batas / garis putus-putus dari Firefox Semua Tag yang Dapat Dipilih.

Letakkan baris kode ini di lembar gaya Anda:

*:focus{outline:none !important;}   
Hasnain Mehmood
sumber
0

Tambahkan gaya batas: tidak ada yang Anda pilih di CSS.

select {
border-style: none; }
Khwaja Abdul Ahad
sumber
-2
    input[type='range']::-moz-focus-outer {
    border: 0;
    outline: none !important;
    }

bekerja 100%

pengguna2577904
sumber
-4

Ini akan menghilangkan fokus dari selectelemen dan garis luar :

$("select").click(function(){
    $(this).blur();
});

Padahal ini bukan tanpa kekurangan di browser lain. Anda sebaiknya memeriksa browser yang digunakan pengguna:

if (FIREFOX) {
    //implement the code
}
Moses Dike Okore
sumber
Harap jelaskan apa yang dilakukan cuplikan kode Anda selain memberikan cuplikan kode tersebut.
sayan