또는 show와 hide 사이의 점진적인 전환을 원하지 않는 경우 (예 : 깜박이는 텍스트 커서) 다음과 같은 것을 사용할 수 있습니다.
/* 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;
}
모두 1s
.cursor
에서 visible
로 이동 합니다 hidden
.
CSS 애니메이션이 지원되지 않는 경우 (예 : 일부 Safari 버전에서)이 간단한 JS 간격으로 대체 할 수 있습니다.
(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);
})()
이 간단한 JavaScript는 실제로 매우 빠르며 많은 경우 CSS보다 더 나은 기본값 일 수 있습니다. JS 애니메이션을 느리게 만드는 많은 DOM 호출 (예 : JQuery의 $ .animate ())은 주목할 가치가 있습니다.
또한 .cursor
나중에 요소 를 추가해도 .cursor
상태가 공유되므로 다른 요소와 정확히 동시에 애니메이션화 된다는 두 번째 이점이 있습니다. CSS에서 알 수없는 한 불가능합니다.