jQuey实现打字机效果

138 阅读1分钟

用javaScript结合jQuey实现打字机打字的效果。

  • 现在HTML里写入需要显示的文字,按标签分好类。
  • 用CSS给不同的字体属性类设置不同的显示效果。
  • 在javaScript里结合jQuey实现一个一个字符动态显示的效果。

效果图:
下载.gif
代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>打字机效果</title>
    <style>
        /*关键字*/
        .keyword {
            color: #7f0055;
            font-weight: bold;
        }
        /*行缩进*/
        .placeholder {
            margin-left: 15px;
        }
        /*空格*/
        .apace {
            margin-left: 7px;
        }
        /*注释*/
        .comments {
            color: #3f7f5f;
        }
    </style>
    <script src="./jquery.js"></script>
</head>
<body>
    <div class="typewriter">
        <span class="comments">/**</span><br />
        <span class="space"><span class="comments">* 这是注释</span><br/>
        <span class="space"><span class="comments">* /</span><br/>
        <span class="keyword">var</span> str = "hello world".<span class="keyword">substr</span>(6)<br />
        <span class="keyword">console.log</span>(str);<br />
        <span class="comments">// world</span><br/>
        <span class="keyword">if</span>(1===1) {<br />
        <span class="placeholder" >str = "你好 世界"<br />
        }<br/>
    </div>
    
</body>
</html>
<script>
    var element=$(".typewriter"); //类数组
    //console.log(element)
    var str=element.html();
    //console.log(str)
    element.html("") //将element元素下的内容替换为""

    var progress=0;
    var ticket=setInterval(function(){
        var current=str.substr(progress,1);
        if(current=="<"){
            progress=str.indexOf(">",progress)+1; 
        }else{
            progress=progress+1;
        }
        
        element.html(str.substring(0,progress) + (progress % 5 ? "_" :""));
        if(progress>=str.length-1){
            //element. html(str.substring(0 , progress));
            clearInterval(ticket);
        }
        
    },70);
</script>