वैकल्पिक रूप से यदि आप शो और हाइड के बीच एक क्रमिक संक्रमण नहीं चाहते हैं (उदाहरण के लिए एक ब्लिंकिंग टेक्स्ट कर्सर) तो आप कुछ इस तरह का उपयोग कर सकते हैं:
/* 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 एनीमेशन समर्थित नहीं है (जैसे कि सफारी के कुछ संस्करणों में) तो आप इस सरल 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);
})()
यह सरल जावास्क्रिप्ट वास्तव में बहुत तेज है और कई मामलों में सीएसएस की तुलना में बेहतर डिफ़ॉल्ट भी हो सकता है। यह ध्यान देने योग्य है कि यह बहुत सारे DOM कॉल्स हैं जो JS एनिमेशन को धीमा बनाते हैं (जैसे JQuery के $ .animate ())।
इसका दूसरा फायदा यह भी है कि यदि आप .cursor
बाद में तत्वों को जोड़ते हैं, तो वे अभी भी ठीक उसी समय पर चेतन करेंगे जैसे .cursor
कि राज्य के साझा किए जाने के बाद से, यह सीएसएस के साथ असंभव है जहां तक मुझे जानकारी है।