jQuery打字效果
HTML
<span id="text">我与父亲不相见已二年余了,</span>
<span id="text1">我与父亲不相见已二年余了,</span>
JavaScript
$.fn.typing=function(n){
//默认选项
var options={
speed:100, //打字速度
range:100, //打字速度波动的范围
repeat:true, //是否重复
flashback:false, //是否倒序返回
flicker:false //是否闪烁
}
$.extend(options,n);
var _this=$(this);
var str=$(this).text().split('');//分割字符串
var index=0;//当前索引
var direction=1;//1为正向,-1为反方向
//将分割后的字符串拼接装入数组并显示出来
$(str).each(function(i,k){
str[i]=(str[i-1]?str[i-1]:'')+str[i];
});
//设置边框模拟光标
_this.css({'border-right':'2px solid #000','padding-right':'3px'});
//启动定时器,开启打字效果
setTimeout(init,options.speed);
//初始化函数
function init(){
_this.text(str[index]);
//如果运行到最后,且开启了重复
if(index>=(str.length-1)&&options.repeat){
//如果设置了倒叙则变换方向
if(options.flashback){
direction=-1;//变换方向为负方向
}else{
index=0; //否则从头开始
}
//如果设置了闪烁则启用闪烁效果
if(options.flicker){
_this.delay(200).fadeOut(1).delay(400).fadeIn(1).delay(200).fadeOut(1).delay(400).fadeIn(1);
}
setTimeout(init,2000);
//如果运行到最后但未开启重复
}else if(index>=(str.length-1) && !options.repeat){
//如果设置了闪烁则启用闪烁效果
if(options.flicker){
_this.delay(200).fadeOut(1).delay(400).fadeIn(1).delay(200).fadeOut(1).delay(400).fadeIn(1);
}
//移除光标样式
_this.css('border-right','');
//如果倒回开始
}else if(index<0){
index=0;
direction=1;//变换方向为正方向
setTimeout(init,Math.random()*options.range+options.speed);
}else{
setTimeout(init,Math.random()*options.range+options.speed);
}
index+=direction;
}
}
$('#text').typing({
range : 200,
repeat : true
});
$('#text1').typing({
speed:2000,
range : 200,
repeat : true
});