• css3线条围绕跑马+jquery打字机效果


    原文地址:css3线条围绕跑马+jquery打字机效果

    232

    有图有真相,今天偶然看到了一种效果,仔细看了下,发现它是用css的clip+css3的动画实现的,简直叼。于是自己拿来了前一阵子写的打字机效果,一起合并,稍微整理了下。

    点这里(chrome浏览器):查看演示

    先来说说这个线条,我们会看到它是2条,实际上就是1个四周border有规律的显示隐藏,那么这里必定会想到after,before属性,我们暂且先考虑after。

    先建立一个box,然后after一个边框

    1 <div class="box"></div>
    1 .box:before{
    2 content: '';
    3 position: absolute;
    4 width:206px;height: 206px;border:2px red solid;
    5 left:-5px;top:-5px;
    6 z-index: 1;
    7 }

    接下来要做的就是让它有规律的显示隐藏就可以了,这里要用到clip属性,我这篇文章有讲到:css3圆形百分比进度条的实现原理

    在这里说说我们这个如何实现,首先我要让这个先显示上边框-左-底-右,这样就有了一个循环。根据clip,rect(上,右,底,左),比如显示上边框,那么就是:

    clip:rect(0px,210px,1px,0px);

    我们只需用animation让它依次显示就ok

    @-webkit-keyframes clipMe{
    0%{ clip: rect(0px, 210px, 2px, 0px); }
    25%{ clip: rect(0px, 2px, 210px, 0px); }
    50%{ clip: rect(208px, 210px, 210px, 0px); }
    75%{ clip: rect(0px, 210px, 210px, 208px); }
    100%{ clip: rect(0px, 210px, 2px, 0px); }
    }

    然后再after中调用显示:

    .box:after{
    -webkit-animation:clipMe 8s linear infinite;
    }

    当然,我们再加一个一模一样的before就ok了,他们的时间间隔为4s,这里要注意,如果你是延迟4s,那么你会在4s内看到的是整个边框出现,这里要改为延迟-4s,这个问题就会完美解决。

    .box:before{
    -webkit-animation:clipMe 8s -4s linear infinite;
    }

    /***************************************************************/

    再来说说打字机,打字机无非就是不断替换显示字符显示在屏幕上,

    先获取box里的内容,

    <div class="box">
    <span>/**仅共娱乐,然并卵**/</span>
    <p>Login : Jmingzi</p>
    <p>password : ******</p>
    <p>Access is granted</p>
    <span>Welcome ymblog.net !</span>
    </div>

    获取以后再一个个替换显示,

    var t = setInterval(function(){
    str = con.substr(0, strlen) + "_";
    me.obj.html(str);
    
    //内容打印完毕
    if(strlen == con.length){
    clearInterval(t);
    }
    strlen = strlen + 1;
    }, me.speed);

    在这里我只不过将它封装为一个类,便于初始化一些参数,完整代码:

    //初始化工作,获取几段文字内容,将它们隐藏后逐个显示即可
    $(function(){
    function Type(obj, speed, welcome){
    this.obj = obj;
    this.speed = speed;
    this.welcome = welcome;
    }
    Type.prototype = {
    init : function(){
    var str = this.obj.html();
    this.obj.html(this.welcome);
    this.add(str);
    },
    add : function(con){
    var me = this;
    var str;
    var strlen = 0;
    var t = setInterval(function(){
    str = con.substr(0, strlen) + "_";
    me.obj.html(str);
    
    //内容打印完毕
    if(strlen == con.length){
    clearInterval(t);
    }
    strlen = strlen + 1;
    }, me.speed);
    }
    }
    var a = new Type($('.box'), 200, '正在初始化...');
    a.init();
    });

    也可以点击右下角查看演示,右键查看源码。

    码字不易,转载请注明来源,谢谢!

  • 相关阅读:
    2020/11/15助教一周小结(第十一周)
    神经网络--理解
    案例一:鸢尾花数据的分类
    TF2基础知识
    软件工程助教工作总结
    软工课程改进建议
    2020-12-27 助教一周小结(第十七周)
    2020-12-20 助教一周小结(第十六周)
    2020-12-13 助教一周小结(第十五周)
    2020-12-06 助教一周小结(第十四周)
  • 原文地址:https://www.cnblogs.com/jhmydear/p/4720983.html
Copyright © 2020-2023  润新知