Alternativ, wenn Sie keinen allmählichen Übergang zwischen Anzeigen und Ausblenden wünschen (z. B. einen blinkenden Textcursor), könnten Sie etwas Ähnliches verwenden:
/* Verwenden Sie auch Präfixe mit @keyframes und Animationen, um aktuelle Browser zu unterstützen */
@keyframes blinker {
from { visibility: visible }
to { visibility: hidden }
/* Alternativ können Sie dies tun:
0% { visibility: visible; }
50% { visibility: hidden; }
100% { visibility: visible; }
wenn Sie `alternate` nicht verwenden möchten */
}
.cursor {
animation: blinker steps(1) 500ms infinite alternate;
}
Jede 1s
wird .cursor
von sichtbar
auf versteckt
wechseln.
Wenn CSS-Animation nicht unterstützt wird (z. B. in einigen Versionen von Safari), können Sie auf dieses einfache JS-Intervall zurückgreifen:
(function(){
var show = 'sichtbar'; // Zustandsvariable durch Intervall umgeschaltet
var time = 500; // Millisekunden zwischen jedem Intervall
setInterval(function() {
// Unseren sichtbaren Zustand bei jedem Intervall umschalten
show = (show === 'versteckt') ? 'sichtbar' : 'versteckt';
// Die Cursor-Elemente abrufen
var cursors = document.getElementsByClassName('cursor');
// Wir könnten das außerhalb des Intervall-Callbacks machen,
// aber dann wäre es nicht mit dem DOM synchron
// Durchlaufen Sie die Cursor-Elemente und aktualisieren Sie sie auf den aktuellen Zustand
for (var i = 0; i < cursors.length; i++) {
cursors[i].style.visibility = show;
}
}, time);
})()
Dieses einfache JavaScript ist tatsächlich sehr schnell und in vielen Fällen möglicherweise sogar eine bessere Standardeinstellung als CSS. Es ist erwähnenswert, dass viele DOM-Aufrufe JS-Animationen langsam machen (z. B. JQuery's $.animate()).
Es hat auch den zweiten Vorteil, dass wenn Sie später .cursor
-Elemente hinzufügen, sie immer genau zur gleichen Zeit wie andere .cursor
s animiert werden, da der Zustand gemeinsam genutzt wird, was meines Wissens nach mit CSS unmöglich ist.