Rumah > hujung hadapan web > tutorial css > Cara membetulkan pilihan berkilat dalam webkit (Safari)

Cara membetulkan pilihan berkilat dalam webkit (Safari)

Barbara Streisand
Lepaskan: 2025-01-12 18:09:42
asal
369 orang telah melayarinya

Masalah keserasian merentas pelayar: Menggayakan elemen HTML <select> dalam Safari

Mengekalkan gelagat aplikasi yang konsisten merentas enjin penyemak imbas yang berbeza boleh menjadi mencabar. Baru-baru ini, semasa membangunkan devpad—sebuah projek yang saya sengaja mengelak rangka kerja UI dan sangat bergantung pada elemen HTML asas—saya menghadapi isu pelik dengan elemen <select> dalam Safari.

Pada mulanya, pembangunan berjalan lancar menggunakan Arc (pelayar berasaskan Chromium). Walau bagaimanapun, ujian dalam Safari mendedahkan percanggahan visual yang tidak dijangka:

How to fix glossy selects in webkit (Safari)

Imej ini mempamerkan perbezaan ketara antara elemen <select> yang diberikan dalam Chromium dan Safari:

How to fix glossy selects in webkit (Safari)

Rendering Safari mempamerkan rupa yang lapuk dan berkilat, tidak seperti rupa bersih dalam Chromium. Selepas penyelidikan menyeluruh merentas Stack Overflow dan ChatGPT, akhirnya saya menemui penyelesaian.

Cadangan Limpahan Tindanan yang biasa ialah menggunakan -webkit-appearance: none;. Walau bagaimanapun, ini mengalih keluar penunjuk anak panah lungsur, memberi kesan kepada pengalaman pengguna.

Pendekatan yang lebih menjanjikan, yang disebut kemudiannya, melibatkan penggunaan imej latar belakang SVG. Ini terbukti rumit apabila turut menggunakan warna latar belakang.

Memanfaatkan ikon Lucide.dev, saya menggabungkan anak panah SVG. Pada mulanya, bagaimanapun, perubahan warna dinamik melalui pembolehubah CSS gagal. Pertanyaan @media dalam elemen select juga terbukti tidak berkesan:

<code class="language-css">select {
  -webkit-appearance: none;
  -moz-appearance: none;
  appearance: none;
  background: url('data:image/svg+xml;utf8,<svg fill="none" height="24" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" viewbox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg"><path d="M6 9 12 15 18 9"></path></svg>') no-repeat;
  /* ...rest of the CSS... */
}</code>
Salin selepas log masuk

Penyelesaian, terima kasih kepada ChatGPT, melibatkan pengekodan URL rentetan SVG:

<code class="language-css">select {
  -webkit-appearance: none;
  -moz-appearance: none;
  appearance: none;
  background: url('data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%2224%22%20height=%2224%22%20viewBox=%220%200%2024%2024%22%20fill=%22none%22%20stroke=%22black%22%20stroke-width=%222%22%20stroke-linecap=%22round%22%20stroke-linejoin=%22round%22%3E%3Cpath%20d=%22M6%209%2012%2015%2018%209%22/%3E%3C/svg%3E') no-repeat;
  background-size: 18px;
  background-position: calc(100% - 3px) 50%;
  background-repeat: no-repeat;
  background-color: var(--input-background);
  padding-right: 24px;
}

@media (prefers-color-scheme: dark) {
  select {
    background-image: url('data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%2224%22%20height=%2224%22%20viewBox=%220%200%2024%2024%22%20fill=%22none%22%20stroke=%22white%22%20stroke-width=%222%22%20stroke-linecap=%22round%22%20stroke-linejoin=%22round%22%3E%3Cpath%20d=%22M6%209%2012%2015%2018%209%22/%3E%3C/svg%3E') !important;
  }
}</code>
Salin selepas log masuk

Keputusan akhir: elemen <select> serasi dan serasi silang penyemak imbas dengan sokongan mod gelap/cahaya.

How to fix glossy selects in webkit (Safari)

Penyelesaian ini seharusnya menjimatkan masa dan usaha orang lain dalam menangani cabaran penggayaan silang pelayar biasa ini. Untuk butiran lanjut tentang projek devpad, sila rujuk catatan blog terbaru saya.

Atas ialah kandungan terperinci Cara membetulkan pilihan berkilat dalam webkit (Safari). Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan