Maison > interface Web > js tutoriel > Comment utiliser l'événement de roue de souris dans des pages HTML5

Comment utiliser l'événement de roue de souris dans des pages HTML5

尊渡假赌尊渡假赌尊渡假赌
Libérer: 2025-02-28 01:06:18
original
978 Les gens l'ont consulté

Cet article explore comment améliorer les pages Web HTML5 avec interactivité des roues de souris, allant au-delà du défilement de la page standard pour permettre des actions comme le zoom. Le défi de base réside dans la compatibilité entre les navigateurs, en particulier avec l'utilisation par Firefox de l'événement DOMMouseScroll au lieu de l'événement mousewheel le plus courant.

illustrons avec un exemple de zoom d'une image:

Tout d'abord, ajoutez une image à votre HTML:

<img src="/static/imghw/default1.png"  data-src="https://img.php.cn/upload/article/000/000/000/174067598031395.jpg"  class="lazy" alt="How to Use the Mouse Wheel Event in HTML5 Pages " />
Copier après la connexion

Ensuite, ajoutez une fonction JavaScript pour gérer l'événement de la roue de la souris:

function MouseWheelHandler(e) {
  // Cross-browser wheel delta
  var e = window.event || e; // IE support
  var delta = Math.max(-1, Math.min(1, (e.wheelDelta || -e.detail)));

  // Adjust image size (adjust min/max as needed)
  var myimage = document.getElementById("myimage");
  myimage.style.width = Math.max(50, Math.min(800, myimage.width + (30 * delta))) + "px";

  return false; // Prevent default scrolling
}
Copier après la connexion

Enfin, joignez le gestionnaire d'événements, comptant les différences de navigateur:

var myimage = document.getElementById("myimage");
if (myimage.addEventListener) {
  myimage.addEventListener("mousewheel", MouseWheelHandler, false);
  myimage.addEventListener("DOMMouseScroll", MouseWheelHandler, false);
} else {
  myimage.attachEvent("onmousewheel", MouseWheelHandler);
}
Copier après la connexion

Ce code ajuste dynamiquement la largeur d'image en fonction de la direction de la roue de la souris. Les fonctions Math.max et Math.min garantissent que la largeur reste dans une plage définie (50px à 800px dans ce cas). L'instruction return false empêche le comportement de défilement de la page par défaut. Bien que cette approche fonctionne à travers les principaux navigateurs, y compris les anciennes versions d'Internet Explorer, la gestion de Safari de la roue de défilement peut nécessiter d'autres ajustements en fonction de la version WebKit spécifique.

Questions fréquemment posées (FAQ):

Les FAQ suivantes répondent aux questions courantes sur l'utilisation de JavaScript pour détecter et gérer les événements de la roue de la souris:

  • Détection des événements de roue de souris: Utilisez l'événement standard wheel pour les navigateurs modernes. Le code plus ancien peut utiliser mousewheel (ie) ou DOMMouseScroll (Firefox), mais wheel offre la meilleure compatibilité cross-browser.

  • wheel vs mousewheel: wheel est la méthode standard et préférée. mousewheel est hérité et moins fiable.

  • Déterminer la direction du défilement: La propriété deltaY de l'événement wheel indique une direction de défilement vertical (positif pour le bas, négatif pour UP). deltaX fournit des informations de défilement horizontal.

  • Empêcher l'action par défaut: Utiliser event.preventDefault() pour arrêter le comportement de défilement par défaut et implémenter des actions personnalisées.

  • défilement horizontal: Utiliser deltaX pour détecter le défilement horizontal.

  • deltaMode Propriété: Cette propriété spécifie les unités de deltaX et deltaY (pixels, lignes ou pages). C'est généralement 0 (pixels).

  • Prise en charge des périphériques mobiles: Les événements de roue de souris ne sont pas directement applicables aux appareils mobiles. Les événements tactiles doivent être utilisés à la place.

  • Compatibilité Firefox: Firefox prend en charge l'événement standard wheel.

  • JQUERY Prise en charge: La méthode .on('wheel', ...) de jQuery simplifie la manipulation des événements.

  • Simulation des événements de roue de souris: Utiliser new WheelEvent('wheel', {deltaY: ...}) et dispatchEvent() à des fins de test.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal