最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

JS實(shí)戰(zhàn)例子之實(shí)現(xiàn)自動打字機(jī)動效

 更新時間:2023年01月28日 16:23:44   作者:經(jīng)海路大白狗  
什么是打字機(jī)效果呢?打字機(jī)效果即為文字逐個輸出,實(shí)際上就是一種Web動畫,下面這篇文章主要給大家介紹了關(guān)于JS實(shí)戰(zhàn)例子之實(shí)現(xiàn)自動打字機(jī)動效的相關(guān)資料,需要的朋友可以參考下

前言

前幾天遇到一個需求,產(chǎn)品告訴我說,希望這些字可以像自動打字那樣,一個一個的出來,于是在完成需求的同時,順便把這個方法記錄出來,看大家是否也需要。

1、實(shí)現(xiàn)思路 

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

然后就需要每次將文字字符串拆開,每次比上一次多顯示一個文字,并且清除掉上一次的顯示;

每次累加要顯示的文字,必定有個累加的過程,這里就需要用到遞歸顯示,而遞歸的重要點(diǎn)在于閾值停止,所以累加的索引和字符串的長度應(yīng)該有一個判斷,以停止繼續(xù)執(zhí)行遞歸。

2、html布局和css樣式

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

<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、預(yù)定義前置變量 

需要預(yù)定義一個最終顯示的字符串; 需要定義獲取dom的變量;需要定義一個索引變量,用于不但累加計(jì)算;需要定義定時打字的變量,用于setTimeout的方法定義,以實(shí)現(xiàn)真實(shí)打字的場景特效;需要提前定義一個獲取字符串長度的變量;需要定義每個階段顯示的字符串的變量;這里共定義了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”,以此類推,通過上一步預(yù)定義的num值累加,最終將字符串全部顯示出來,所以第一步代碼應(yīng)該是:

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

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

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

而這只是第1個文字,想要實(shí)現(xiàn)不斷累加,就得有個回調(diào),用于源源不斷的累加,計(jì)算,渲染顯示:

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

 而遞歸的重點(diǎn)在于源源不斷,閾值而停

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

5、完整源代碼 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>自動打字機(jī)</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>

6、結(jié)語

我們一年又一年的生活著,很多時候覺得沒有壓力,甚至也不知道自己未來應(yīng)該做點(diǎn)什么。就像這個遞歸函數(shù),只是被一些人控制著,周而復(fù)始,我們甚至忘記了思考。

有時候需要一個閾值,停下來讓我們想一想,可能你還是沒有想到什么

到此這篇關(guān)于JS實(shí)戰(zhàn)例子之實(shí)現(xiàn)自動打字機(jī)動效的文章就介紹到這了,更多相關(guān)JS自動打字機(jī)動效內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • JavaScript本地存儲實(shí)現(xiàn)用戶名存儲案例

    JavaScript本地存儲實(shí)現(xiàn)用戶名存儲案例

    本文主要介紹了JavaScript本地存儲實(shí)現(xiàn)用戶名存儲案例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-07-07
  • 原生js事件的添加和刪除的封裝

    原生js事件的添加和刪除的封裝

    在IE瀏覽器中添加或刪除事件用attachEvent、detachEvent,下面的對事件的添加和刪除做了封裝,感興趣的朋友可以參考下
    2014-07-07
  • 使用TypeScript類型注解的方法詳解

    使用TypeScript類型注解的方法詳解

    這篇文章主要為大家詳細(xì)介紹了TypeScript的類型注解,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-03-03
  • JavaScript DOM 學(xué)習(xí)總結(jié)(五)

    JavaScript DOM 學(xué)習(xí)總結(jié)(五)

    當(dāng)頁面加載時,瀏覽器會創(chuàng)建頁面的文檔對象模型(Document Object Model)。文檔對象模型定義訪問和處理HTML文檔的標(biāo)準(zhǔn)方法,本篇文章給大家介紹javascript dom 學(xué)習(xí)總結(jié)(五),感興趣的朋友一起學(xué)習(xí)吧
    2015-11-11
  • 鴻蒙JS實(shí)戰(zhàn)之計(jì)算器功能開發(fā)實(shí)例

    鴻蒙JS實(shí)戰(zhàn)之計(jì)算器功能開發(fā)實(shí)例

    這篇文章主要給大家介紹了關(guān)于鴻蒙Js實(shí)戰(zhàn)之計(jì)算器功能開發(fā)的相關(guān)資料,計(jì)算器是我們生活中經(jīng)常使用的應(yīng)用,此項(xiàng)目是基于Harmony實(shí)現(xiàn)的簡易計(jì)算器,需要的朋友可以參考下
    2024-02-02
  • 基于JavaScript實(shí)現(xiàn)簡單掃雷游戲

    基于JavaScript實(shí)現(xiàn)簡單掃雷游戲

    這篇文章主要介紹了基于JavaScript實(shí)現(xiàn)簡單掃雷游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-01-01
  • 微信小程序開發(fā)之toast等彈框提示使用教程

    微信小程序開發(fā)之toast等彈框提示使用教程

    彈框提示是我們在開發(fā)中經(jīng)常用的一個效果,下面這篇文章主要給大家介紹了微信小程序開發(fā)之toast等彈框提示實(shí)現(xiàn)的相關(guān)資料,文中介紹的非常詳細(xì),對大家具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起看看吧。
    2017-06-06
  • JS正則RegExp.test()使用注意事項(xiàng)(不具有重復(fù)性)

    JS正則RegExp.test()使用注意事項(xiàng)(不具有重復(fù)性)

    這篇文章主要介紹了JS正則RegExp.test()使用注意事項(xiàng),結(jié)合實(shí)例形式分析了RegExp.test()方法的功能與用法,以及針對不能重復(fù)調(diào)用的解決方法,需要的朋友可以參考下
    2016-12-12
  • JS模擬的騰訊微博app撕紙效果的實(shí)例代碼

    JS模擬的騰訊微博app撕紙效果的實(shí)例代碼

    本來想用css3來實(shí)現(xiàn),但后來腦袋一熱就用了js,省的別人你ie怎么沒效果?。≡隍v訊微博app上看到的一個效果,鼠標(biāo)擊哪里就撕了哪里,跟撕報紙似的,任意點(diǎn)擊左邊面的灰色區(qū)域,查看效果,當(dāng)時覺得很有意思,問了下高人,突然覺悟了,原來如此。。
    2013-05-05
  • 插件:檢測javascript的內(nèi)存泄漏

    插件:檢測javascript的內(nèi)存泄漏

    插件:檢測javascript的內(nèi)存泄漏...
    2007-03-03

最新評論

安新县| 宁津县| 宝山区| 西平县| 磐石市| 西乌珠穆沁旗| 横峰县| 临沧市| 龙岩市| 信阳市| 河津市| 如东县| 襄城县| 卢龙县| 深州市| 青浦区| 房山区| 鄱阳县| 龙川县| 蒙自县| 大余县| 天峨县| 张家界市| 涞源县| 玉树县| 兴义市| 兰坪| 新绛县| 遵义市| 东方市| 辽宁省| 东海县| 漯河市| 黎城县| 云南省| 湘潭县| 南京市| 浪卡子县| 阳泉市| 麻阳| 商城县|