求jQuery 实现文字逐个变色的效果,小女子多谢了!
求jQuery 实现文字逐个变色的效果,小女子谢谢了!!!
让这些文字逐个变色,一直变
------解决思路----------------------
先用JS把里面的文字一个一个的用span包起来。
然后用你说的这个插件,选择器是这些span就可以了。
------解决思路----------------------
自己引入那个插件。
------解决思路----------------------
------解决思路----------------------
$('.b').each(function(){
var text = this.innerHTML;
text = text.split('');
for(var i=0;i<text.length;i++){
text[i] = '<span>'+text[i]+'</span>';
}
this.innerHTML = text.join('');
})
function randomColor(){
var r = parseInt(Math.random()*255);
var g = parseInt(Math.random()*255);
var b = parseInt(Math.random()*255);
return ['#',r.toString(16),g.toString(16),b.toString(16)].join('')
}
var speed = 200;
$('.b span').each(function(i){
var span = $(this);
setTimeout(function(){
span.animate({color:randomColor()},200)
},speed*i);
})
按他的改改
不过这样只是 快字独立逐个改色
我觉得你的需求是不是和 唱歌的字幕一样 从头到尾涂过去
这样的话 你需要 在 原来的 文字块上放 一个带 颜色的文字块
变色就是 上面的颜色文字块的 宽度 从 0%--100%
<div id="a">
<div class="b" >我好想你</div>
<div class="b" >嫁给我吧</div>
<div class="b" >不行</div>
<div class="b" >为什么啊</div>
<div class="b" >你不爱我啊</div>
</div>
让这些文字逐个变色,一直变
------解决思路----------------------
先用JS把里面的文字一个一个的用span包起来。
然后用你说的这个插件,选择器是这些span就可以了。
------解决思路----------------------
$('.b').each(function(){
var text = this.innerHTML;
text = text.split('');
for(var i=0;i<text.length;i++){
text[i] = '<span>'+text[i]+'</span>';
}
this.innerHTML = text.join('');
})
function randomColor(){
var r = parseInt(Math.random()*255);
var g = parseInt(Math.random()*255);
var b = parseInt(Math.random()*255);
return ['#',r.toString(16),g.toString(16),b.toString(16)].join('')
}
$('.b span').each(function(){
var fn = arguments.callee;
$(this).animate({color:randomColor()},200,function(){
fn.call(this)
})
})
自己引入那个插件。
------解决思路----------------------
$('.b span').each(function(){
var fn = arguments.callee; //什么意思啊--fn指向函这个函数本身,为了省一个变量名
$(this).animate({color:randomColor()},200,function(){
fn.call(this);// //什么意思啊--在前一次渐变结束之后再次调用一次这个方法,并且把this指向当前的元素,不然之后执行$(this).animate的时候this就不是选择的span了
})
})
------解决思路----------------------
$('.b').each(function(){
var text = this.innerHTML;
text = text.split('');
for(var i=0;i<text.length;i++){
text[i] = '<span>'+text[i]+'</span>';
}
this.innerHTML = text.join('');
})
function randomColor(){
var r = parseInt(Math.random()*255);
var g = parseInt(Math.random()*255);
var b = parseInt(Math.random()*255);
return ['#',r.toString(16),g.toString(16),b.toString(16)].join('')
}
var speed = 200;
$('.b span').each(function(i){
var span = $(this);
setTimeout(function(){
span.animate({color:randomColor()},200)
},speed*i);
})
按他的改改
不过这样只是 快字独立逐个改色
我觉得你的需求是不是和 唱歌的字幕一样 从头到尾涂过去
这样的话 你需要 在 原来的 文字块上放 一个带 颜色的文字块
变色就是 上面的颜色文字块的 宽度 从 0%--100%