तो मेरे पास लगभग code काम कर रहा है जो मैं चाहता हूं, लेकिन मेरी एनीमेशन ठीक से एक साथ सिंक नहीं हो सकता है। मैं पाठ को हाइलाइट करने वाले कर्सर को एनिमेट करने की कोशिश कर रहा हूं, और उसके बाद बटन पर क्लिक कर रहा हूं। समस्या यह है कि कर्सर या तो बहुत धीमा या बहुत तेज़ है। मैं इसे गतिशील बनाने की कोशिश कर रहा हूं ताकि कोई फर्क नहीं पड़ता कि टेक्स्ट कितना समय है, फिर भी मुझे एनीमेशन सिंक हो सकता है। मुझे पता है कि यह शायद सिर्फ एक गणित मुद्दा है, लेकिन इसके चारों ओर मेरा सिर नहीं मिल सकता है। मिलीसेकंड के साथ पिक्सेल से मिलान करने की कोशिश करने के बारे में कुछ मेरा सिर स्पिन कर रहा है। मेरे सभी बाल खींचने से पहले कृपया मदद करें। धन्यवाद।एनीमेशन सिंकिंग, कर्सर और हाइलाइट
यहाँ एचटीएमएल
<p><span id="container">I need to be highlighted one character at a time</span>
<input id="click" type="button" value="click me"/></p>
<img src="http://dl.dropbox.com/u/59918876/cursor.png" width="16"/>
यहाँ सीएसएस
#container{
font-size: 16px;
margin-right: 10px;
}
.highlight{
background: yellow;
}
img{
position: relative;
top: -10px;
}
और जावास्क्रिप्ट
function highlight(){
var text = $('#container').text(); //get text of container
$('#click').css('border','none'); //remove the border
$('img').css('left', '0px'); //reset the cursor left
$('img').animate({left: $('#container').width() + 40}, text.length*70); //animation of cursor
$('#container').html('<span class="highlight">'+text.substring(0,1)+'</span><span>'+text.substring(1)+'</span>'); //set the first html
(function myLoop (i) {//animation loop
setTimeout(function() {
var highlight = $('.highlight').text();
var highlightAdd = $('.highlight').next().text().substring(0,1);;
var plain = $('.highlight').next().text().substring(1);
$('#container').html('<span class="highlight">'+highlight+highlightAdd+'</span><span>'+plain+'</span>');
if (--i) myLoop(i);// decrement i and call myLoop again if i > 0
}, 70)
})(text.length);
setTimeout(function() {
$('#click').css('border','1px solid black');
}, text.length*85);
}
highlight();
var intervalID = setInterval(highlight, $('#container').text().length*110);
//clearInterval(intervalID);
यहाँ fiddle मैं चारों ओर में खेल रहे हैं के लिए एक लिंक है है।
+1 मुझे यह पसंद है, और देखेंगे कि मैं इसे अपने कोड में एकीकृत कर सकता हूं या नहीं। मैं अभी भी देखना चाहता हूं कि बेहतर समाधान हैं या नहीं। धन्यवाद –
मदद करने के लिए बहुत खुश ... –
आप रॉक! विचार के लिए धन्यवाद। यह वही था जो मुझे समाधान के साथ आने की आवश्यकता थी। मेरा अद्यतन [कोड] देखें (http://jsfiddle.net/bplumb/MmZwU/2/)। –