中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

JS如何實現自動打字機動效

發布時間:2023-01-30 09:19:33 來源:億速云 閱讀:143 作者:iii 欄目:開發技術

這篇文章主要講解了“JS如何實現自動打字機動效”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“JS如何實現自動打字機動效”吧!

1、實現思路 

首先這個需求的目的是實現自動打字機效果,意思就是文字會一個一個出來,而且文字的最終顯示提前已經固定,或者是已經獲取完成了;

然后就需要每次將文字字符串拆開,每次比上一次多顯示一個文字,并且清除掉上一次的顯示;每次累加要顯示的文字,必定有個累加的過程,這里就需要用到遞歸顯示,而遞歸的重要點在于閾值停止,所以累加的索引和字符串的長度應該有一個判斷,以停止繼續執行遞歸。

2、html布局和css樣式

本功能并沒有復雜的樣式顯示,所以布局只是用了一個div元素,而為了還原需求,將背景設置為黑底,文字設置為白色,更有一種自動打字機的科技感,代碼如下:

<div class="word"></div>
 
<style>
    body {
       background: #000;
    }
    .word {
       margin: 100px;
       width: 500px;
       height: 30px;
       padding: 2px 10px;
       font-size: 26px;
       color: #FFF;
       font-weight: bold;
    }
</style>

3、預定義前置變量 

需要預定義一個最終顯示的字符串; 需要定義獲取dom的變量;需要定義一個索引變量,用于不但累加計算;需要定義定時打字的變量,用于setTimeout的方法定義,以實現真實打字的場景特效;需要提前定義一個獲取字符串長度的變量;需要定義每個階段顯示的字符串的變量;這里共定義了6個變量,代碼如下:

var wordStr = '2023年,喜迎新春,玉兔吉祥';
var wordDom = document.querySelector('.word');
 
var num = 0;
var wordTimeout = null;
var wLength = wordStr.length;
var showWord = '';

4、動效過程解析

既然是模擬打字效果,咱們定義的字符串是“2023年,喜迎新春,玉兔吉祥”,所以顯示過程肯定是:第一次顯示“2”,第二次顯示“20”,第三次顯示“202”,以此類推,通過上一步預定義的num值累加,最終將字符串全部顯示出來,所以第一步代碼應該是:

showWord += wordStr.charAt(num);
wordDom.innerHTML = showWord;

此時num值為0,通過字符串的charAt獲取固定索引的字符,也就是“2” ,但既然要模擬真實打字效果,打字都是需要時間的,所以,我們加上setTimeout函數,有個演示打字效果:

wordTimeout = setTimeout(() => {
     showWord += wordStr.charAt(num);
     wordDom.innerHTML = showWord;
}, 300)

而這只是第1個文字,想要實現不斷累加,就得有個回調,用于源源不斷的累加,計算,渲染顯示:

function autoWord() {
    wordTimeout = setTimeout(() => {
       showWord += wordStr.charAt(num);
       wordDom.innerHTML = showWord;
       num++;
 
       autoWord();  // 遞歸調用
    }, 300)
}
autoWord();

 而遞歸的重點在于源源不斷,閾值而停

if (num < wLength) {
   autoWord();
} else {
   window.clearTimeout(wordTimeout);
   wordTimeout = null;
}

5、完整源代碼 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>自動打字機</title>
    <style>
        * {
            margin: 0;
            padding: 0;
        }
        body {
            background: #000;
        }
        .word {
            margin: 100px;
            width: 500px;
            height: 30px;
            padding: 2px 10px;
            font-size: 26px;
            color: #FFF;
            font-weight: bold;
        }
    </style>
</head>
<body>
    <div class="word"></div>
 
    <script>
        var wordStr = '2023年,喜迎新春,玉兔吉祥';
        var wordDom = document.querySelector('.word');
 
        var num = 0;
        var wordTimeout = null;
        var wLength = wordStr.length;
        var showWord = '';
 
        function autoWord() {
            wordTimeout = setTimeout(() => {
                showWord += wordStr.charAt(num);
                wordDom.innerHTML = showWord;
                num++;
 
                if (num < wLength) {
                    autoWord();
                } else {
                    window.clearTimeout(wordTimeout);
                    wordTimeout = null;
                }
            }, 300)
        }
        autoWord();
        
    </script>
</body>

感謝各位的閱讀,以上就是“JS如何實現自動打字機動效”的內容了,經過本文的學習后,相信大家對JS如何實現自動打字機動效這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

js
AI

怀安县| 密山市| 河西区| 武乡县| 秀山| 怀柔区| 浪卡子县| 屯门区| 茂名市| 微山县| 永川市| 巩义市| 都兰县| 万荣县| 宁阳县| 枣阳市| 扬中市| 资溪县| 荔浦县| 揭阳市| 保康县| 商丘市| 马山县| 邹平县| 仙桃市| 柳河县| 天峨县| 酒泉市| 徐闻县| 太康县| 三亚市| 德阳市| 万宁市| 镶黄旗| 墨脱县| 广宗县| 东阿县| 九龙坡区| 临潭县| 晴隆县| 西吉县|