Zum simulieren von :active css-pseudo-Klasse in android, die auf nicht-link-Elementen?
Ich würde gerne in der Lage, zu imitieren das Verhalten der :active
pseudo-Klasse auf alle Elemente in Android webkit. Derzeit ist die :active
syntax funktioniert nur auf a
Elemente (links). Fast alle die verwertbaren Elemente, die in die app an der ich arbeite, sind etwas anderes als ein standard-link-tag. iOS webkit unterstützt :active
auf alle Elemente.
/* works on both android iOS webkit */
a:active {
color: blue;
}
/* works on iOS webkit, does not work on android webkit */
div:active {
color: red;
}
Ich habe ein paar von Ressourcen [1,2], die zu lösen ähnliche Probleme, aber Sie sind beide ein bisschen schwer, und ich Frage mich, ob es eine leichtere Lösung, ich bin einfach nicht in der Lage zu finden.
- http://cubiq.org/remove-onclick-delay-on-webkit-for-iphone
- http://code.google.com/intl/ro-RO/mobile/articles/fast_buttons.html
Du musst angemeldet sein, um einen Kommentar abzugeben.
Basierend auf dem, was @caffein sagte, hier ist eine vollständige Umsetzung dieser:
Für alle :active code, schreiben Sie CSS-Regeln, die wie folgt Aussehen.
Dann in Ihr Dokument ein ready-Ereignis fügen Sie diesen code:
Dies hat den Vorteil, über eine schnelle native :aktiven-Klasse auf iOS, und fallen zurück zu JavaScript auf Android.
Übernommen aus meinem blog bei http://pervasivecode.blogspot.com/2011/11/android-phonegap-active-css-pseudo.html
EDIT: hab ich da entdeckt, dass die Tasten können gelegentlich 'stick' in der fake-aktiven Zustand. Die Lösung für dieses Problem ist auch mit der event touchcancel. E. g. fügen Sie diese an die oben..
Wenn Sie nicht möchten, zu verwenden, jedes script, das fügt und entfernt die Klasse für den aktiven Zustand eines Elements, fügen Sie einfach leeren touchstart - Ereignis an das body-tag:
Dieser wird Ihnen sagen, das android-Gerät zu handhaben touch-events und pseudo-Klasse :active wird korrekt auf alle Elemente.
No-jQuery-version, basierend auf Ben Clayton ' s Lösung.
EDIT: Hinzugefügt, "touchmove" event.
Der ":active " - pseudo-Klasse wird ausgelöst, wenn Sie tatsächlich klicken Sie auf oder drücken Sie auf ein element.
Ein workaround für smartphones ist die Nutzung des Javascript-Ereignisse: "ontouchstart" & "ontouchend".
Versuchen Sie es mit ontouchstart so ändern Sie den Stil und ontouchend eigentlich die Aktion auslösen.
Da kann ich nicht kommentieren, ich werde eine weitere Antwort hier.
Nadzeya vorgeschlagen, die folgende Lösung:
Dieser funktioniert wie beschrieben, aber ich glaube, es kann auch eine unbeabsichtigte Folge.
Es wurde ein problem auf unserer Seite, wo die Tasten gelegentlich aufhören zu arbeiten. In der Tat, die Schaltfläche Farben ändern (als wenn es gedrückt wurde), aber das click-Ereignis würde nicht das Feuer. Auch submit-buttons in Formularen scheitern würden, das Formular zu senden (kein Javascript eingebunden), auch nach erscheinen gedrückt.
Heute sah ich wieder das problem. Aus einer Laune heraus, habe ich entfernt, dieses Attribut und das problem ging Weg. Ich habe dann Hinzugefügt, es wieder und das problem kam zurück.
Da kann ich das problem nicht reproduzieren zuverlässig, ich kann nicht sicher sein, dass dies die Ursache ist, aber für jetzt ich werde den tag aus und lösen Sie den :active Problems einen anderen Weg.
versuchen. Es funktioniert bei mir einwandfrei auf Android
Versuchen fügen Sie diesen code in Ihre HTML:
Ich habe eine einfache Alternative Lösung. Dies aber erfordert, Sie zu ändern, das div-tag ein tag aus.
Finden Sie die Quelle an Telefon gap-tutorial
brauchen Sie nur diesen code in Ihr Dokument: