Ngoài ra, nếu bạn không muốn chuyển đổi dần dần giữa hiển thị và ẩn (ví dụ: con trỏ văn bản nhấp nháy), bạn có thể sử dụng một cái gì đó như:
/* 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;
}
Mỗi 1s
.cursor
sẽ đi từ visible
đến hidden
.
Nếu hoạt hình CSS không được hỗ trợ (ví dụ: trong một số phiên bản Safari), bạn có thể dự phòng khoảng thời gian JS đơn giản này:
(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 đơn giản này thực sự rất nhanh và trong nhiều trường hợp thậm chí có thể là mặc định tốt hơn CSS. Điều đáng chú ý là có rất nhiều lệnh gọi DOM làm cho hoạt ảnh JS bị chậm (ví dụ: $ .animate ()) của JQuery.
Nó cũng có lợi thế thứ hai là nếu bạn thêm .cursor
các phần tử sau, chúng vẫn sẽ hoạt động chính xác cùng lúc với các .cursor
trạng thái khác kể từ khi trạng thái được chia sẻ, điều này là không thể đối với CSS theo như tôi biết.