Rumah > hujung hadapan web > tutorial css > Cara Melumpuhkan Gaya :hover dengan Berkesan pada Peranti Sentuh: Panduan Komprehensif

Cara Melumpuhkan Gaya :hover dengan Berkesan pada Peranti Sentuh: Panduan Komprehensif

Mary-Kate Olsen
Lepaskan: 2024-10-27 02:07:03
asal
631 orang telah melayarinya

How to Effectively Disable :hover Styles on Touch Devices: A Comprehensive Guide

Cara Melumpuhkan Gaya :hover pada Peranti Sentuh: Panduan Komprehensif

Masalah:
Apabila peranti sentuh melawati tapak web, : tuding gaya CSS pencetus pada klik atau ketik. Ini boleh mengganggu perhatian atau malah menyebabkan elemen interaktif tidak boleh diakses.

Objektif:
Alih keluar atau abaikan semua :tuding perisytiharan CSS untuk peranti sentuh tanpa mengetahui setiap pemilih perisytiharan.

Penyelesaian:

Alih Keluar JavaScript

Alih keluar semua peraturan CSS yang mengandungi :hover menggunakan JavaScript.

<code class="javascript">if (hasTouch()) {
  for (var si in document.styleSheets) {
    for (var ri = styleSheet.rules.length - 1; ri >= 0; ri--) {
      if (styleSheet.rules[ri].selectorText.match(':hover')) {
        styleSheet.deleteRule(ri);
      }
    }
  }
}</code>
Salin selepas log masuk

Kebaikan:

  • Serasi dengan penyemak imbas lama dan tidak memerlukan perubahan CSS.
    Keburukan:
  • Melumpuhkan tuding pada tetikus dan peranti sentuh bercampur, membahayakan UX.
  • Hanya boleh mengalih keluar lembaran gaya yang dihoskan pada domain yang sama.

CSS sahaja dengan Pertanyaan Media

Gunakan sekatan @media untuk mengandungi peraturan :tuding.

<code class="css">@media (hover: hover) {
  a:hover { color: blue; }
}</code>
Salin selepas log masuk

Kebaikan:

  • Mudah untuk dilaksanakan dalam CSS.
    Keburukan:
  • Memerlukan sokongan untuk media tuding pertanyaan (iOS 9.0 , Chrome untuk Android, Android 5.0 ).
  • Tidak konsisten untuk tetikus bercampur dan peranti sentuh.

Pengesanan Sentuhan dan Suntikan CSS

Kesan peristiwa sentuhan menggunakan JavaScript dan tambah kelas CSS secara bersyarat.

<code class="js">if (!hasTouch()) document.body.className += ' hasHover'</code>
Salin selepas log masuk
<code class="css">body.hasHover a:hover { color: blue; }</code>
Salin selepas log masuk

Kebaikan:

  • Lebih dipercayai daripada pertanyaan media untuk peranti sentuhan campuran.
    Keburukan:
  • Masih dipengaruhi oleh peristiwa emulasi sentuhan (cth., kursor tetikus pada skrin sentuh).

Penyelesaian Muktamad: Pengesanan Tuding Dinamik

Dayakan atau lumpuhkan gaya tuding berdasarkan kursor tetikus dan acara sentuh.

<code class="js">function watchForHover() {
  document.addEventListener('touchstart', updateLastTouchTime, true)
  document.addEventListener('touchstart', disableHover, true)
  document.addEventListener('mousemove', enableHover, true)
}</code>
Salin selepas log masuk

Kebaikan:

  • Penyelesaian paling mantap, berfungsi pada semua penyemak imbas.
  • Menyesuaikan gaya tuding pada input peranti secara dinamik.
    Keburukan:
  • Mempunyai kelewatan yang singkat selepas peristiwa sentuhan (cth., 500ms) untuk mengelakkan peristiwa gerakan tetikus yang dicontohi.

Atas ialah kandungan terperinci Cara Melumpuhkan Gaya :hover dengan Berkesan pada Peranti Sentuh: Panduan Komprehensif. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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