Maison >interface Web >js tutoriel >Comment éviter l'effet de survol persistant pour les boutons des appareils tactiles ?
Comme vous le savez, la technologie des écrans tactiles ne prend pas en charge le comportement de survol. donc, Lors de la création d'un site Web réactif, vous devez soigneusement réfléchir quand et où l'utiliser. : survolez l'interaction. Certains appareils à écran tactile perdront l'effet de survol des liens simples Ouvrez une URL. Vous verrez le style :hover pendant une courte période avant que la page ne change Sur iOS, car :hover est activé avant l'événement click
Il s'agit de problèmes mineurs qui n'ont aucun impact sur la fonctionnalité du site. Voici un:hover, qui Utilisez soit les propriétés CSS d'affichage ou de visibilité pour afficher ou masquer un autre élément, oui Le vrai problème.
Il existe deux méthodes que vous pouvez utiliser pour résoudre ce problème.
Appareils sans JavaScript - Vous pouvez utiliser les fonctions de requête multimédia CSS pour résoudre ce problème. Appareils prenant en charge cette fonctionnalité hover sont désignés par la condition "hover: hover". Ajout du CSS suivant uniquement sur ces appareils. L’utilisation des requêtes multimédias avec cette condition est garantie.
@media(hover: hover) { #btn:hover { background-color: #ccf6c8; } }La traduction chinoise de
Cela ajoute uniquement des effets de survol pour les appareils prenant en charge le survol ; il n'y a pas d'effets de survol pour les appareils tactiles. exister Dans ce cas, la couleur de fond du bouton change lorsque la souris passe dessus. Sur les appareils tactiles, il y a Il n'y a pas d'effet de survol, le bouton reste donc dans son état d'origine.
<!DOCTYPE html> <html> <title>How to prevent sticky hover effects for buttons on touch devices - TutorialsPoint</title> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <style> #myButton { background-color: #096381; margin: 3%; font-size: 30px; color: #fff; } @media (hover: hover) { #myButton:hover { /*On devices that support hover, add a hover effect to the button.*/ background-color: #0a92bf; } } </style> </head> <body> <h2>Welcome to TutorialsPoint!</h2> <p>Our mission is to deliver Simply Easy Learning with clear, crisp, and to-the-point content on a wide range of technical and non-technical subjects without any preconditions and impediments.</p> <button type="button" id="myButton"> Submit </button> </body> </html>
Le code ci-dessus produira le résultat suivant : Ceci est le résultat sur un écran non tactile.
Deuxième étape utilisant JavaScript - Dans cette méthode, la fonction JavaScript suivante sera utilisée pour vérifier Que nous utilisions ou non des appareils tactiles. Chaque fois que l'utilisateur touche un élément, La réponse à l'événement ontouchstart renvoie une valeur vraie. Nombre maximum de points de contact consécutifs que l'appareil prend en charge est renvoyé par navigator.maxTouchPoints.
Les fonctionnalités prises en charge par cet appareil sont renvoyées par navigator.maxTouchPointsDans navigator.msMaxTouchPoints, la même fonctionnalité est disponible sous le préfixe du fournisseur "ms" Cible les navigateurs IE 10 et antérieurs. Par conséquent, si l'appareil prend en charge la fonctionnalité tactile, le la fonction renvoie vrai.
function is_touch_enabled() { return ('ontouchstart' in window) || (navigator.maxTouchPoints > 0) || (navigator.msMaxTouchPoints > 0); }
Dans le code ci-dessous, cette classe fournit un effet de survol du bouton en CSS −
<!DOCTYPE html> <html> <title>How to prevent sticky hover effects for buttons on touch devices - TutorialsPoint</title> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <style> #myButton { background-color: #096381; margin: 3%; font-size: 30px; color: #fff; } .myButton2:hover { background-color: #0a92bf !important; /*The myButton2 class now has a hover effect.*/ } </style> </head> <body onload="touchHover()"> <p>TutorialsPoint have established a Digital Content Marketplace to sell Video Courses and eBooks at a very nominal cost. <br>You will have to register with us to avail these premium services.</p> <button type="button" id="myButton">Submit</button> <script> function touchHover() { function is_touch_enabled() { // Verify that touch is turned on return "ontouchstart" in window || navigator.maxTouchPoints > 0 || navigator.msMaxTouchPoints > 0; } if (!is_touch_enabled()) { // Add the "myButton2" class if touch is not enabled. let verifyTouch = document.getElementById("myButton"); verifyTouch.classList.add("myButton2"); } } </script> </body> </html>
Le code ci-dessus produira le résultat suivant : Ceci est le résultat sur un appareil non tactile.
Comme il n'y a pas d'effet de survol sur les appareils tactiles, les boutons restent dans leur état d'origine.
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!