图集1/5

正文 5107字数 1,022,096阅读

在写网站的时候,有时候可能需要打字机动画去实现一些页面效果的显示,我在网上找了很久也没有很完整的,符合我要求的代码,索性就结合网上的大神们的代码段自己写了一个
HTML
view plain copy <div class="container"></div>
Run code
Cut to clipboard

    CSS
    view plain copy .container{ float: left; display: inline-block; position: relative; } @keyframes blink-caret { 50% { background-color: transparent; } } span{ animation:blink-caret 1s step-end infinite; width: 3px; height: 20px; background-color: #000; float: left; position: absolute; right: -10px; }
    Run code
    Cut to clipboard

      JS
      view plain copy var s = 'Welcome to LoVueAn'; var con = $('.container'); var index = 0; var length = s.length; var tId = null; function start(){ con.text(''); con.append('<span></span>'); tId=setInterval(function(){ con.append(s.charAt(index)); if(index++ === length){ clearInterval(tId); index = 0; start() } },400); } start();
      Run code
      Cut to clipboard

        效果

        这段代码采用了JS中的定时器,支持输入完之后归零再次动画,通过append添加了一个span标签模拟光标,css动画渲染闪烁效果,再通过绝对定位始终依附在父容器的右方以达到模拟输入效果的目的。注意在表头引入jquery!
        网上搜索到的一般都是通过原生JS写出,但没有光标效果,纯CSS写出来的又对容器的宽要求很高,光标一直悬于最后方不利于实战开发,我认为这种方法相对较好
        <!DOCTYPE html> <html> <head> <title>李振球</title> <meta http-equiv="content-type" content="text/html; charset=UTF-8" /> <link rel="icon" href="/favicon.ico"> <meta name="keywords" content="李振球"> <meta name="description" content="李振球"> <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" /> <meta name="apple-mobile-web-app-capable" content="yes" /> <meta name="apple-mobile-web-app-status-bar-style" content="black" /> <meta name="format-detection" content="telephone=no" /> <style> *{padding:0px;margin:0px;} html,body{height:100%;} body{background:#000 url(86f740e5196bec328ee09cca4dd9c827.jpg);background-repeat: no-repeat; background-size: cover;background-position: center;} #main{width:100%;height:100%;background:url(5-120601093339.png);opacity: 0.45;} #mainc{background: url(5-120601093354.gif); display: inline-block; color: #fff; padding: 12px; margin: 12px; border-radius: 12px;} </style> <script type="text/javascript" src="http://apps.bdimg.com/libs/jquery/1.9.0/jquery.min.js"></script> </head> <body> <div style="display:none;"><!--缓存图片,背景图片闪白bug,修复刷新的时候背景闪一下才显示背景图片--> <img src="86f740e5196bec328ee09cca4dd9c827.jpg"> <img src="5-120601093339.png"> <img src="5-120601093354.gif"> </div> <div id="main"> <div id="mainc"> <p d="我的"></p> <br /> <p d="生日:1990年2月13号"></p> <p d="星座:水瓶男"></p> <p d="大学:广西科技大学"></p> <br /> <p d="工作:"></p> <p d="2013:义乌 扬帆科技有限公司 美工"></p> <p d="2014:绍兴 大海网络科技有限公司 技术"></p> <p d="2015-至今:南宁 共振广告设计有限公司 技术、运维、网站运营"></p> <br /> <p d="兴趣:互联网相关 各种先进IT技术 痴迷天文学物理学化学生物学等和科技沾边的"></p> <p d="微信:iswtf_ 小程序可搜索 李振球"></p> <p d="博客:blog.lizhenqiu.com"></p> <p d="email:winwin@lizhenqiu.com"></p> <p d="桂ICP备15007619号-3 阿里云提供云计算服务支持"></p> <br /> <p d="2017.07.21"></p> </div> </div> <script> var sarr=new Array(); var tId; $(document).ready(function(){ $('#mainc p').each(function(indexs){ var s = $(this).attr('d'); sarr[indexs]=s; }); start(0); }); function start(indexs){ var s=sarr[indexs]; if(!s) return false; var sll=sarr.length; var sl=s.length; var con=$('#mainc').find('p:eq('+indexs+')'); var indexss = 0; tId=setInterval(function(){ //if() return false; //console.log(indexss); if(!s || indexs>sll){ return false; } con.append(s.charAt(indexss)); indexss++; if(indexss>sl){ clearInterval(tId); indexs++; start(indexs); } },100); } //console.log(sarr); /* var length = s.length; var tId = null; var that=$(this); start(that,s,index,length,tId); $(selector).index(element) function start(con,s,indexs,length,tId){ var index = 0; con.text(''); var tId=setInterval(function(){ con.append(s.charAt(index)); if(index++ === length){ clearInterval(tId); } },100); } */ </script> </body> </html>
        Run code
        Cut to clipboard