CSS3里如何完成打字動(dòng)畫
發(fā)表時(shí)間:2023-12-25 來源:明輝站整理相關(guān)軟件相關(guān)文章人氣:
[摘要]相較于之前的CSS版本,我們利用css3可以實(shí)現(xiàn)很多炫酷的東西,比如老版的CSS無(wú)法實(shí)現(xiàn)的打字動(dòng)畫。下面我們就給大家?guī)硪粋(gè)小案例,看看酷炫的打字動(dòng)畫是怎么做出來的。<!DOCTYPE html><html><head><meta charset=&quo...
相較于之前的CSS版本,我們利用css3可以實(shí)現(xiàn)很多炫酷的東西,比如老版的CSS無(wú)法實(shí)現(xiàn)的打字動(dòng)畫。下面我們就給大家?guī)硪粋(gè)小案例,看看酷炫的打字動(dòng)畫是怎么做出來的。
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<title>Document</title>
<style type="text/css" media="screen">
.box {
width:100%;
height:500px;
text-align:center;
position:relative;
}
.container {
width:80%;
height:400px;
border:1px solid red;
text-align:left;
margin:0 auto;
}
.container span {
display:inline-block;
border:1px solid red;
transition: all 2s;
transform:translateY(0px) rotate(0deg);
font-size:14px;
}
textarea {
width:200px;
resize:none;
height:20px;
line-height:20px;
padding:10px 0px;
font-size:14px;
font-weight:400;
}
.clone {
font-size:14px;
border:1px solid red;
width:80%;
height:20px;
margin:0 auto;
line-height:20px;
padding:10px 0px;
text-align:left;
visibility:hidden;
}
.clone span {
transition:all 2s;
position:absolute;
}
</style>
</head>
<body>
<div>
<div>
</div>
<div>
<span></span>
</div>
<textarea placeholder="請(qǐng)輸入文字"></textarea>
</div>
</body>
<script>
//計(jì)算出input輸入框的偏移值
var container = document.querySelector(".container");
var inner = document.querySelector(".inner");
var clone = document.querySelector(".clone");
var textarea = document.querySelector(".textarea");
var offx = (container.offsetWidth - textarea.offsetWidth-20)/2;
var offy = (container.offsetHeight + inner.offsetHeight);
//創(chuàng)造一個(gè)span標(biāo)簽 需要注入需要注入起始坐標(biāo)
function createspan(text,x,y) {
this.text = text;
this.x = x;
this.y = y;
this.init = {};
}
createspan.prototype.render = function() {
var span = document.createElement("span");
container.appendChild(span);
span.style.display = "inline-block";
span.style.transform = "translateX("+this.x+"px) translateY("+this.y+"px) rotate(720deg)";
span.style.transition = "all 2s";
span.innerHTML = this.text;
this.init = span;
}
createspan.prototype.recover = function() {
var that = this;
setTimeout(function(){
that.init.style.transform = "translateX(0px) translateY(0px) rotate(0deg)";
},10)
}
var newtext = "";
var oldtext = "";
var x = 0;
var y = 0;
var total = "";
//監(jiān)聽textarea文本框的輸入變化情況
textarea.addEventListener("input",function(){
var text = "";
if (inner.offsetWidth >= container.offsetWidth ) {
offx = (container.offsetWidth - textarea.offsetWidth-20)/2 - textarea.offsetWidth;
}
else if (inner.offsetWidth >= textarea.offsetWidth*3) {
offx = (container.offsetWidth - textarea.offsetWidth-20)/2 - textarea.offsetWidth*3;
}
else if (inner.offsetWidth >= textarea.offsetWidth*2) {
offx = (container.offsetWidth - textarea.offsetWidth-20)/2 - textarea.offsetWidth*2;
} else if(inner.offsetWidth>=textarea.offsetWidth) {
offx = (container.offsetWidth - textarea.offsetWidth-20)/2 - textarea.offsetWidth;
}
//先算文字的變化 兩種情況一種是增加一種是減少
newtext = textarea.value;
oldtext = inner.innerHTML;
newtext = newtext.trim();
//添加字符
if(newtext.length > oldtext.length) {
for(var i = 0;i < newtext.length;i++) {
if(newtext[i] != oldtext[i]) {
text += newtext[i];
inner.innerHTML = newtext;
}
}
total += text;
// 生成
for(var i =0;i < text.length;i++) {
var a = new createspan(text[i],offx,offy);
a.render();
a.recover();
}
}
//刪除字符
})
</script>
</html>
相信通過這個(gè)案列大家會(huì)熟練的掌握CSS3的這個(gè)功能,更多精彩請(qǐng)關(guān)注php中文網(wǎng)其它相關(guān)文章!
相關(guān)閱讀:
CSS3里怎么實(shí)現(xiàn)loading動(dòng)畫效果
CSS3里怎么實(shí)現(xiàn)單選框動(dòng)畫特效
CSS里的if條件hack怎么寫
以上就是CSS3里怎么實(shí)現(xiàn)打字動(dòng)畫的詳細(xì)內(nèi)容,更多請(qǐng)關(guān)注php中文網(wǎng)其它相關(guān)文章!
網(wǎng)站建設(shè)是一個(gè)廣義的術(shù)語(yǔ),涵蓋了許多不同的技能和學(xué)科中所使用的生產(chǎn)和維護(hù)的網(wǎng)站。