Javascrpit特效之打字机效果

Javascrpit特效之打字机效果

今天来看看怎么实现炫酷的打字机效果。即把一段话一个字一个字的显示出来。

效果图:


实现思路:

首先规定好显示字数的速度即settimeout执行间隔用来控制每个字之间输出速度。再把判断段落的总字数,循环段落总字数来实现一个字一个字的输出。

js代码:

var theNewsNum;
 var theAddNum;
 var totalNum;
 var CurrentPosion=0;
 var theCurrentNews;
 var theCurrentLength;
 var theNewsText;
 var theTargetLink;
 var theCharacterTimeout;
 var theNewsTimeout;
 var theBrowserVersion;
 var theWidgetOne;
 var theWidgetTwo;
 var theSpaceFiller;
 var theLeadString;
 var theNewsState;
 function startTicker(){
  // ------ 设置初始数值
  theCharacterTimeout = 50;//字符间隔时间
  theNewsTimeout = 2000;//新闻间隔时间
  theWidgetOne =  "_";//新闻前面下标符1
  theWidgetTwo =  "-";//新闻前面下标符
  theNewsState = 1;
  theNewsNum = document.getElementById("incoming").children.AllNews.children.length;//新闻总条数
  theAddNum = document.getElementById("incoming").children.AddNews.children.length;//补充条数
  totalNum =theNewsNum+theAddNum;
  theCurrentNews = 0;
  theCurrentLength = 0;
  theLeadString = " ";
  theSpaceFiller = " ";
  runTheTicker();
 }
 // --- 基础函数
 function runTheTicker(){
  if(theNewsState == 1){
   if(CurrentPosion<theNewsNum){
    setupNextNews();
   }
   else{
    setupAddNews();
   }
   CurrentPosion++;
   if(CurrentPosion>=totalNum||CurrentPosion>=1){
    CurrentPosion=0;//最多条数不超过num_gun条
   }
  }
  if(theCurrentLength != theNewsText.length){
   drawNews();
  }
  else{
   closeOutNews();
  }
 }
 // --- 跳转下一条新闻
 function setupNextNews(){
  theNewsState = 0;
  theCurrentNews = theCurrentNews % theNewsNum;
  theNewsText = document.getElementById("AllNews").children[theCurrentNews].children.Summary.innerText;
  theTargetLink = document.getElementById("AllNews").children[theCurrentNews].children.Summary.children[0].href;
  theCurrentLength = 0;
  document.all.hottext.href = theTargetLink;
  theCurrentNews++;
 }
 function setupAddNews() {
  theNewsState = 0;
  theCurrentNews = theCurrentNews % theAddNum;
  theNewsText = document.getElementById("AllNews").children[theCurrentNews].children.Summary.innerText;
  theTargetLink = document.getElementById("AllNews").children[theCurrentNews].children.Summary.children[0].href;
  theCurrentLength = 0;
  document.all.hottext.href = theTargetLink;
  theCurrentNews++;
 }
 // --- 滚动新闻
 function drawNews(){
  var myWidget;
  if((theCurrentLength % 2) == 1){
   myWidget = theWidgetOne;
  }
  else{
   myWidget = theWidgetTwo;
  }
  document.all.hottext.innerHTML = theLeadString + theNewsText.substring(0,theCurrentLength) + myWidget + theSpaceFiller;
  theCurrentLength++;
  setTimeout("runTheTicker()", theCharacterTimeout);
 }
 // --- 结束新闻循环
 function closeOutNews(){
  document.all.hottext.innerHTML = theLeadString + theNewsText + theSpaceFiller;
  theNewsState = 1;
  setTimeout("runTheTicker()", theNewsTimeout);
 }
window.οnlοad=startTicker;


评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值