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();
});

 

也可以點擊右下角查看演示,右鍵查看源碼。

碼字不易,轉載請注明來源,謝謝!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM