Wenn Sie keinen schrittweisen Übergang zwischen Ein- und Ausblenden wünschen (z. B. einen blinkenden Textcursor), können Sie alternativ Folgendes verwenden:
/* Also use prefixes with @keyframes and animation to support current browsers */
@keyframes blinker {
from { visibility: visible }
to { visibility: hidden }
/* Alternatively you can do this:
0% { visibility: visible; }
50% { visibility: hidden; }
100% { visibility: visible; }
if you don't want to use `alternate` */
}
.cursor {
animation: blinker steps(1) 500ms infinite alternate;
}
Jeder 1s
.cursor
wird von visible
bis gehen hidden
.
Wenn die 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 = 'visible'; // state var toggled by interval
var time = 500; // milliseconds between each interval
setInterval(function() {
// Toggle our visible state on each interval
show = (show === 'hidden') ? 'visible' : 'hidden';
// Get the cursor elements
var cursors = document.getElementsByClassName('cursor');
// We could do this outside the interval callback,
// but then it wouldn't be kept in sync with the DOM
// Loop through the cursor elements and update them to the current state
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 sogar ein besserer Standard als das CSS. Es ist erwähnenswert, dass es viele DOM-Aufrufe sind, die JS-Animationen verlangsamen (z. B. JQuerys $ .animate ()).
Es hat auch den zweiten Vorteil, dass .cursor
Elemente, die später hinzugefügt werden, immer noch genau zur gleichen Zeit animiert werden wie andere .cursor
s, da der Status gemeinsam genutzt wird. Dies ist meines Wissens mit CSS unmöglich.