HTML 单文件制作打字机切换动画

这篇具有很好参考价值的文章主要介绍了HTML 单文件制作打字机切换动画。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

预览

打字机动画是一种常见的网页效果,通常用于“我是某某”这样的场景,比如个人简介或者产品介绍,需要在多个词汇之间切换。这篇博文将从头开始制作类似的效果。它看起来像这样:

我要成为
赛马娘
高手!

如果这里的黄字不会动,可能是因为这里的架构不支持,请到https://penghy.com/?p=typing-switching-animation-with-a-html-single-file查看效果

没错,这就是本站首页上的动画。由于不需要导入 CSS、JavaScript 等文件,因此可以轻松地嵌入到各种博客的HTML容器中。

基础文本

首先像往常一样创建基本文本,例如:

我要成为 <br>
赛马娘<br>
高手!
我要成为
赛马娘
高手!

可以在 <span> 标签内用 id 标记中间行,然后在 <style> 标签内写入 css 样式来更改文本颜色。

<span id = "Text01"><!-- 用 id“Text01”标记这些文本-->
  Pretty Derby<br>
</span>

<style>
  #Text01 /*设置ID为“Text01”的文本样式*/
  {
    color : #FF8000;
  }
</style>
我要成为
赛马娘
高手!

 文章来源地址https://www.toymoban.com/news/detail-844255.html

单词切换动画

要通过脚本来更改文本内容,首先需要创建一个变量来获取目标文本。由于中间行已经标记了id“Text01”,所以可以通过“document”实现。顺便说一句,JavaScript也可以直接写在<script>标签中。

<script>
    const text = document.getElementById("Text01");    //获取标记的文本
    text.textContent = "原神";    //设置文本内容
</script>

 

我要成为
赛马娘
高手!

 

现在创建一个函数和一个数组,让它自动切换。

每当执行此函数时,索引就会从 0 循环递增到数组的长度。

<script>
const words = ["C++","Go","Unreal","Unity"];    //任何想要显示的词汇
const text = document.getElementById("Text01");    //获取标记的文本
let wordIndex = 0;    //当前词在words数组中的索引
let delay = 100;    //显示词汇切换的间隔

const UpdateText = () =>
    {
        text.textContent = words[wordIndex];    //将文本内容设置为数组中对应的词汇
        wordIndex++;    //index++ , 准备好显示下一个词
        if(wordIndex>=words.length)
            wordIndex = 0;    //当索引超过长度时将其重置为零,使其循环显示

        setTimeout(UpdateText,delay);    //一定延迟后再次调用该函数
			
    }

UpdateText();    //不要忘了调用这个函数
</script>

 

我要成为
赛马娘
高手!

字符打字动画

使字符逐个出现,主要是通过分割字符串。正好有一个简单的函数叫substring

比如将文本内容设置为数组“words”的第“wordIndex”元素的第一个“charIndex”字符:

text.textContent = words[wordIndex].substring(0,charIndex); 


一开始,默认状态是输入,也就是说“charIndex”每次都会增加。可以使用名为“isDelete”的布尔变量来记录状态。

let isDelete = false;

出现字符意味着“isDelete”将为false。当“charIndex”大于“worlds”的当前元素时,将“isDelete”设置为true。

同时,为“延迟”设置较长的时间,使其在状态发生变化时停留的时间更长。

if(!isDelete)
    {
        delay = DefaultDelay; //当当前状态为默认状态时,不要忘记将延迟重置为默认时间
        charIndex++;
        if(charIndex-1==words[wordIndex].length)
        {
            delay = WaitDelay;
            isDelete = true;
        }
    }

如果状态为“Deleting”,则每次charIndex都会减1。当索引下降到0时,或者说所有当前单词都已被删除时,就意味着是时候切换到下一个单词了。复制之前在里面写的“切换单词”的代码。

 else if(isDelete)
    {
        delay = DefaultDelay;
        charIndex--;
        if(charIndex<1)
        {
            isDelete = false;
            wordIndex++;
            if(wordIndex>=words.length)
            wordIndex = 0;
        }        
    }

芜湖!现在代码就基本完成了。如果需要在某些博客中嵌入此功能,只需将所有代码直接复制并粘贴到 html 容器中即可!

完整源代码

<div>
    我要成为 <br>

    <span id = "text">
    赛马娘
    </span><br>

    高手!

</div>

<style>
    #text 
    {
      color : #FF8000;
    }
</style>

<script>
          const words = ["C++","Go","Unreal","Unity"];
          const text = document.getElementById("text");
          let wordIndex = 0;
          let charIndex = 0; 
          let isDelete = false;
          let DefaultDelay = 100;
          let WaitDelay = 700;
          let delay = 100;
          const UpdateText = () =>
          {
              text.textContent = words[wordIndex].substring(0,charIndex);   
              if(!isDelete)
              {
                  delay = DefaultDelay;
                  charIndex++;
                  if(charIndex-1==words[wordIndex].length)
                  {
                      delay = WaitDelay;
                      isDelete = true;
                  }
              }
              else if(isDelete)
              {
                  delay = DefaultDelay;
                  charIndex--;
                  if(charIndex<1)
                  {
                      isDelete = false;
                      wordIndex++;
                      if(wordIndex>=words.length)
                          wordIndex = 0;
                  }        
              }
              setTimeout(UpdateText,delay);
          };
          UpdateText();
</script>

 

希望本教程能够有所帮助。

 

到了这里,关于HTML 单文件制作打字机切换动画的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Vue3实现打字机效果

    typeit 是一款轻量级打字机特效插件。该打印机特效可以设置打字速度,是否显示光标,是否换行和延迟时间等属性,它可以打印单行文本和多行文本,并具有可缩放、响应式等特点。官方文档

    2024年02月02日
    浏览(57)
  • 如何实现chatgpt的打字机效果

    点击↑上方↑蓝色“ 编了个程 ”关注我~ 这是Yasin的第 88 篇原创文章 最近在搭建chat gpt代理的时候,发现自己的配置虽然能够调通接口,返回数据,但是结果是一次性显示出来的,不像之前的chat gpt的官网demo那样实现了打字机效果,一个字一个字出来。 所以研究了一下chat

    2023年04月18日
    浏览(70)
  • 大模型问答助手前端实现打字机效果

    随着现代技术的快速发展,即时交互变得越来越重要。用户不仅希望获取信息,而且希望以更直观和实时的方式体验它。这在聊天应用程序和其他实时通信工具中尤为明显,用户习惯看到对方正在输入的提示。 ChatGPT,作为 OpenAI 的代表性产品之一,不仅为用户提供了强大的自

    2024年02月08日
    浏览(43)
  • vue3 实现 chatgpt 的打字机效果

    在做 chatgpt 镜像站的时候,发现有些镜像站是没做打字机的光标效果的,就只是文字输出,是他们不想做吗?反正我想做。于是我仔细研究了一下,实现了打字机效果加光标的效果,现在分享一下我的解决方案以及效果图 首先要明确一点,chatgpt 返回的文本格式是 markdown 的,

    2024年02月05日
    浏览(53)
  • Unity Text文本实现打字机(一个一个出来)的效果

    Unity Text文本要实现打字机,即一个个文字出来的效果,可以通过代码把text文本字符串拆成一个个字符然后添加到文本中。 具体实现: 新建一个控制脚本:TypewriteController.cs,并编写以下代码: 此控制脚本先把脚本文本获取后赋给一个字符串变量,然后置空文本内容,再通过

    2024年01月25日
    浏览(48)
  • 前端发送Fetch请求实现流式请求、模拟打字机效果等

    前端需要接收后端的流式返回数据,并实时渲染。 普通的xhr请求都是等http协议数据包一次性返回之后才渲染,类似于ChatGPT的Http接口内容类型为text/event-stream。这种内容类型需要与浏览器建立持久连接并持续监听服务器返回的数据。 npm 方式安装类库 使用 调用 fetchEventSource

    2024年02月13日
    浏览(44)
  • 聊聊大模型"打字机"效果的背后技术——SSE

    转载请注明出处:https://www.cnblogs.com/zhiyong-ITNote SSE:Server Sent Event;服务器发送事件。 Server-Sent Events(SSE)是一种由服务器向客户端推送实时数据的技术。它是构建基于事件的、服务器到客户端的通信的一种方法,特别适用于需要实时更新和推送信息的应用场景,如实时通知

    2024年03月27日
    浏览(50)
  • 记录--20行js就能实现逐字显示效果???-打字机效果

    横版 竖版 可以看到文字是一段一段的并且独占一行,使用段落标签p表示一行 一段文字内,字是一个一个显示的,所以这里每一个字都用一个span标签装起来 每一个字都是从透明到不透明的过渡效果,使用css3的过渡属性transition让每个字都从透明过渡到不透明 这里只需要一个

    2024年02月06日
    浏览(42)
  • 微信小程序-接入sse数据流并实现打字机效果( ChatGPT )

    从流中获取的数据格式如下 小程序调用SSE接口 我这边接收到的数据类型为Uint8Array,需要处理成text文本(如上图) 使对话有打字机效果 参考自:小程序实现 ChatGPT 聊天打字兼自动滚动效果 完整代码

    2024年04月09日
    浏览(90)
  • Vue3实现酷炫打字机效果:让你的网站文字动起来

    ✅创作者:陈书予 🎉个人主页:陈书予的个人主页 🍁陈书予的个人社区,欢迎你的加入: 陈书予的社区 🌟专栏地址: 三十天精通 Vue 3

    2024年02月05日
    浏览(62)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包