2015-09-16 6 views
7

Die Pseudo-Klasse: hover CSS funktioniert auf Touch-Geräten nicht gut. Der Schwebezustand hält an, bis etwas anderes berührt wird. So in unseren Web-Anwendungen verwenden wir Modernizr mit Touch-Fähigkeit Browser/Geräte zu erkennen und deaktivieren wir schweben Staaten in diesen Fällen:Hover-Funktion erkennen

.no-touch .Taste: Hover {...}

Dies wird ein Problem bei einem Hybridgerät, das sowohl einen Touchscreen als auch eine Zeigervorrichtung wie eine Maus oder ein Touchpad unterstützt. Modernizr erkennt, dass es berührungsaktiviert ist und keiner der Hover-Zustände funktioniert, wenn die Maus verwendet wird.

Was nützlicher wäre, ist das Vorhandensein der Maus oder eines anderen Zeigegeräts anstelle des Touchscreens zu erkennen. Aber ich finde nichts dergleichen.

Irgendwelche Vorschläge?

+0

nicht einmal ein Hybrid-Gerät sein. Android unterstützt Mäuse und USB-OTG, so dass Sie trivialerweise eine normale Maus an Ihr Telefon/Tablet anschließen können und Sie werden einen voll funktionsfähigen Mauszeiger bekommen. –

+1

Das ist nicht die Frage. Ich frage, wie man erkennt, ob ein Browser/Gerät einen Mauszeiger hat, damit ich die Pseudo-Klasse: hover aktivieren kann. – elmonty

+0

Sehr gute und einfache Frage und es scheint (auch für mich) gibt es keine wirklich befriedigenden Antworten darauf . Jedenfalls scheint mir für mich auch der Einsatz von Modernizr ein Nein zu sein, gerade wegen der hybriden Geräte, bei denen der Nutzer die freie Entscheidung hat, jederzeit von der einen oder der anderen zu wechseln. – Garavani

Antwort

-1

können Sie jQueries versuchen .mouseover() .mouseenter() .mouseout() .mouseleave()

Ich bin nicht sicher, ob dies Ihre Frage beantwortet, aber das ist eine andere Art und Weise über schwebt auf dem Gehen und Erkennen, wann ein "Zeiger" tritt über etwas ein. Sie können auch Media-Abfragen für Ihre: Mauszeiger in Ihrem CSS, und ich denke, schalten Sie sie aus. Oder machen Sie etwas anderes bei einer bestimmten Breite der Bildschirmgröße des Benutzers. 800px ist so etwas wie eine iPad-Größe. Unten ist ein Code, ich hoffe wirklich, das funktioniert!

$(document).ready(function(){ 
 
    $(".box").mouseover(function(){ 
 
    var duhbox = $(".box").addClass("black"); 
 
    duhbox.animate({borderRadius: "50px"}); 
 
    }); 
 
    $(".box").mouseout(function(){ 
 
    var goBack = $(".box").removeClass("black"); 
 
    goBack.animate({borderRadius: "0px"}); 
 
    }); 
 
});
.box{ 
 
    height: 150px; 
 
    width: 150px; 
 
    background-color: royalblue; 
 
    border: 1px solid black; 
 
} 
 

 
.black{ 
 
    background-color: black; 
 
    cursor: pointer; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class='box'></div>

wenn diese, wie Sie es wollte nicht funktioniert. Ich denke an andere Wege!

+0

Ich weiß, wie man auf Schweben reagiert. Was ich wissen möchte ist, wie man erkennt, ob ein Browser/Gerät einen Mauszeiger zeigen kann und daher korrekt schweben kann (z. B. kein klebriger Schwebeflug). – elmonty

1

Ich weiß, dass dies eine alte Frage, aber für Googler hier landen, diese Medienabfrage wird die Arbeit machen:

@media not all and (hover: none) { 
    .hoverspecificstyles:hover { 
    display: block; 
    } 
} 

Entnommen this answer