实现【打字机动画】的两种办法

打字机动画是一个很常见的动画效果,实现的方式也有很多

最近在项目中刚好遇到了类似的需求,整理了几个实现动画的方法,分享一下~

方法一、

效果最好的打字机动画

通过 js 的定时器增减文字,单独用一个标签来写光标动画,这样即使文字换行也能良好呈现

HTML

<div class="typing">
   <span class="typing-text">这是一个传说中的打字动画</span>
   <i class="caret"></i>
</div>

CSS

.caret::after {
   content: "";
   display: inline-block;
   width: 2px;
   height: 1em;
   margin-bottom: -2px;
   margin-left: -2px;
   background-color: #333;
   animation: blink-caret .5s step-end infinite;
}
@keyframes  blink-caret { 50% {opacity: 0;} }

JS

  var box = document.getElementsByClassName(‘typing-text‘)[0];
  var str = box.innerText;
  var i = 0;
  box.innerText = ‘‘;
  var typing = setInterval(function() {
    box.innerText += str[i++];
    i >= str.length && clearInterval(typing);
  }, 200);

方法二、

在网上找的方法,纯 CSS3 做的动画

通过限定宽度配合 overflow:hidden 来实现文字添加的效果,使用 border 做光标

<style type="text/css">
      .typing {
        border-right: .1em solid;
        width: 9em; /*宽度为“字数 + em”*/
        white-space: nowrap;
        overflow: hidden;
        animation: typing 5s steps(9, end), /*步数为字数*/
              blink-caret .5s step-end infinite alternate;
      }
      @keyframes typing { from { width: 0; } }
      @keyframes blink-caret { 50% { border-color: transparent; } }
</style>

<div class="typing">这是一个打字机动画</div>      

这种办法的优点就是不用写 js,但有很多的局限性:

比如文字不能自动换行,元素宽度还需要手动设置

当文字是英文的时候,必须使用 Consolas 之类的等宽字体

时间: 2024-10-20 13:21:25

实现【打字机动画】的两种办法的相关文章

两种办法提交表单

办法1.同一个页面中建立两个表单 各自提交: <form action="?" name="form1" id="form1">  <!-- 表单内容 --> <input type="submit" /> </form> <form action="?" name="form1" id="form1">  

读取硬盘上被覆盖数据的两种办法

文件管理的真谛在于方便保存和迅速提取,所有的文件将通过文件夹分类被很好地组织起来,放在你最能方便找到的地方.解决这个问题目前最理想的方法就是分类管理,从硬盘分区开始到每一个文件夹的建立,我们都要按照自己的工作和生活需要,分为大大小小.多个层级的文件夹,建立合理的文件保存架构. 此外所有的文件.文件夹,都要规范化地命名,并放入最合适的文件夹中.这样,当我们需要什么文件时,就知道到哪里去寻找.这种方法,对于相当数量的人来说,并不是一件轻松的事,因为他们习惯了随手存放文件和辛苦.茫无头绪地查找文件.下

使用POST方式弹出窗口的两种办法

使用POST方式弹出窗口的两种办法 最近在做一个功能需要弹窗,但是不能用get方式,因为get方式对url的长度有限制,所以必须用post,总结了两个方法,大家可以参考下 1. 代码如下: var $form1=$("<form action='"+url+"' id='f' name='f' method='post'></form>"); $form1.append($("<input type='hidden' name

MSCOMM32控件注册的两种办法

当我们在VC或者VB或者VS环境下基于MSCOMM控件开发的软件发布后,是不是有种很爽的感觉,可以拿到别人的电脑上运行下你的软件,可是当你移植过去后却发现软件无法点击的动(别笑,我在开发C#软件时就是这样)或者出现如下图所示的情况: 这种情况一般出现在Windows7版本下,这说明MSCOMM32没注册,我们可以选择两种方法去解决,一种方法是当我们安装VC++6.0/VB6.0时,如果选择了ACtiveX控件项(自定义安装),MSComm控件就会自动安装在计算机上了,并在系统文件夹下多了3个文件

winform防止控件随窗体变化出现布局错乱两种办法

///为了防止控件随窗体变化出现布局错乱的现象,利用两种办法 第一种: 利用锚的方法:即使该控件距离某下边的距离固定 类似于div+css中的margin-left 位置如图所示: 第二种方法: 利用DOCK方法将其填充完,那么当窗体大小变化时,也不会出现错乱情况 当然,有时文本框只有一行,解决办法是: 调整属性: 然后开始填充:

Android动画的两种使用方式。

android 动画的分类就不说了,主要说一下动画的两种使用方法:1.通过代码生成并使用动画 (不利于重复使用) 2.通过xml文件生成并使用动画(更方便,重用性高). 1.通过代码生成动画 ? 1 2 3 4 5 //初始化 Animation scaleAnimation = new ScaleAnimation(0.1f, 1.0f,0.1f,1.0f); //设置动画时间 scaleAnimation.setDuration(500); this.startAnimation(scale

Android系统移植与调试之-------&gt;如何修改开机动画的两种方式剖析【转】

本文转载自:http://blog.csdn.net/ouyang_peng/article/details/9564753 首先,我们先来分析一下源码: frameworks/base/cmds/bootanimation/BootAnimation.cpp 首先看一下定义的常量: BootAnimation::readyToRun() 进入一个if判断语句 BootAnimation::threadLoop() ==> BootAnimation::Android()会加载"image

android缩放动画的两种实现方法

在android开发.我们会常常使用到缩放动画,普通情况下缩放动画有两种实现方式.一种是直接通过java代码去实现,第二种是通过配置文件实现动画,以下是两种动画的基本是用法: Java代码实现: //创建缩放动画对象 Animation animation = new ScaleAnimation(0, 1.0f, 0f, 1.0f); animation.setDuration(1500);//动画时间 animation.setRepeatCount(3);//动画的反复次数 animati

C# HttpClient设置cookies的两种办法

一般有两种办法 第一种handler.UseCookies=true(默认为true),默认的会自己带上cookies,例如 var handler = new HttpClientHandler() { UseCookies = true }; var client = new HttpClient(handler);// { BaseAddress = baseAddress }; client.DefaultRequestHeaders.Add("user-agent", &qu

[转]MFC子线程中更新控件内容的两种办法

一.概述 每个系统中都有线程(至少都有一个主线程),而线程最重要的作用就是并行处理,提高软件的并发率.针对界面来说,还能提高界面的响应能力.一般的,为了应用的稳定性,在数据处理等耗时操作会单独在一个线程中运行,而所有与主UI线程有关的控件数据刷新应该到主UI线程中处理.也就是数据处理线程发消息,让界面UI去更新控件.在MFC中线程分为界面线程和工作者线程,界面实际就是一个线程画出来的东西,这个线程维护一个"消息队列","消息队列"也是界面线程和工作者线程的最大区别,