明輝手游網(wǎng)中心:是一個(gè)免費(fèi)提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺(tái)!

CSS3里如何完成打字動(dòng)畫

[摘要]相較于之前的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)站。