Javascrpit之打字機效果

2018-6-25    seo達人

如果您想訂閱本博客內(nèi)容,每天自動發(fā)到您的郵箱中, 請點這里

今天來看看怎么實現(xiàn)炫酷的打字機效果。即把一段話一個字一個字的顯示出來。

效果圖:

實現(xiàn)思路:

首先規(guī)定好顯示字?jǐn)?shù)的速度即settimeout執(zhí)行間隔用來控制每個字之間輸出速度。再把判斷段落的總字?jǐn)?shù),循環(huán)段落總字?jǐn)?shù)來實現(xiàn)一個字一個字的輸出。

js代碼:


    
  1. var theNewsNum;
  2. var theAddNum;
  3. var totalNum;
  4. var CurrentPosion=0;
  5. var theCurrentNews;
  6. var theCurrentLength;
  7. var theNewsText;
  8. var theTargetLink;
  9. var theCharacterTimeout;
  10. var theNewsTimeout;
  11. var theBrowserVersion;
  12. var theWidgetOne;
  13. var theWidgetTwo;
  14. var theSpaceFiller;
  15. var theLeadString;
  16. var theNewsState;
  17. function startTicker(){
  18. // ------ 設(shè)置初始數(shù)值
  19. theCharacterTimeout = 50;//字符間隔時間
  20. theNewsTimeout = 2000;//新聞間隔時間
  21. theWidgetOne = "_";//新聞前面下標(biāo)符1
  22. theWidgetTwo = "-";//新聞前面下標(biāo)符
  23. theNewsState = 1;
  24. theNewsNum = document.getElementById("incoming").children.AllNews.children.length;//新聞總條數(shù)
  25. theAddNum = document.getElementById("incoming").children.AddNews.children.length;//補充條數(shù)
  26. totalNum =theNewsNum+theAddNum;
  27. theCurrentNews = 0;
  28. theCurrentLength = 0;
  29. theLeadString = " ";
  30. theSpaceFiller = " ";
  31. runTheTicker();
  32. }
  33. // --- 基礎(chǔ)函數(shù)
  34. function runTheTicker(){
  35. if(theNewsState == 1){
  36. if(CurrentPosion<theNewsNum){
  37. setupNextNews();
  38. }
  39. else{
  40. setupAddNews();
  41. }
  42. CurrentPosion++;
  43. if(CurrentPosion>=totalNum||CurrentPosion>=1){
  44. CurrentPosion=0;//最多條數(shù)不超過num_gun條
  45. }
  46. }
  47. if(theCurrentLength != theNewsText.length){
  48. drawNews();
  49. }
  50. else{
  51. closeOutNews();
  52. }
  53. }
  54. // --- 跳轉(zhuǎn)下一條新聞
  55. function setupNextNews(){
  56. theNewsState = 0;
  57. theCurrentNews = theCurrentNews % theNewsNum;
  58. theNewsText = document.getElementById("AllNews").children[theCurrentNews].children.Summary.innerText;
  59. theTargetLink = document.getElementById("AllNews").children[theCurrentNews].children.Summary.children[0].href;
  60. theCurrentLength = 0;
  61. document.all.hottext.href = theTargetLink;
  62. theCurrentNews++;
  63. }
  64. function setupAddNews() {
  65. theNewsState = 0;
  66. theCurrentNews = theCurrentNews % theAddNum;
  67. theNewsText = document.getElementById("AllNews").children[theCurrentNews].children.Summary.innerText;
  68. theTargetLink = document.getElementById("AllNews").children[theCurrentNews].children.Summary.children[0].href;
  69. theCurrentLength = 0;
  70. document.all.hottext.href = theTargetLink;
  71. theCurrentNews++;
  72. }
  73. // --- 滾動新聞
  74. function drawNews(){
  75. var myWidget;
  76. if((theCurrentLength % 2) == 1){
  77. myWidget = theWidgetOne;
  78. }
  79. else{
  80. myWidget = theWidgetTwo;
  81. }
  82. document.all.hottext.innerHTML = theLeadString + theNewsText.substring(0,theCurrentLength) + myWidget + theSpaceFiller;
  83. theCurrentLength++;
  84. setTimeout("runTheTicker()", theCharacterTimeout);
  85. }
  86. // --- 結(jié)束新聞循環(huán)
  87. function closeOutNews(){
  88. document.all.hottext.innerHTML = theLeadString + theNewsText + theSpaceFiller;
  89. theNewsState = 1;
  90. setTimeout("runTheTicker()", theNewsTimeout);
  91. }
  92. window.onload=startTicker;
藍藍設(shè)計m.sillybuy.com )是一家專注而深入的界面設(shè)計公司,為期望卓越的國內(nèi)外企業(yè)提供卓越的UI界面設(shè)計、BS界面設(shè)計 、 cs界面設(shè)計 、 ipad界面設(shè)計 、 包裝設(shè)計 、 圖標(biāo)定制 、 用戶體驗 、交互設(shè)計、 網(wǎng)站建設(shè) 、平面設(shè)計服務(wù)

分享本文至:

日歷

鏈接

個人資料

藍藍設(shè)計的小編 http://m.sillybuy.com

存檔