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 .cursorwird von visiblebis 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 .cursorElemente, die später hinzugefügt werden, immer noch genau zur gleichen Zeit animiert werden wie andere .cursors, da der Status gemeinsam genutzt wird. Dies ist meines Wissens mit CSS unmöglich.