【问题标题】:Text typing animation文字输入动画
【发布时间】:2017-05-21 07:46:56
【问题描述】:

如何使用 css 或 bootstrap 创建文本输入和删除动画?

我有三个标题,应该一个接一个地显示。 首先它应该显示输入第一个标题然后擦除第一个标题,然后输入第二个标题,然后擦除第二个标题。它应该继续这样做。

【问题讨论】:

  • 为此有多个库。你搜索过它们吗?
  • 到目前为止,我只找到了一个标题并且它没有被删除

标签: css twitter-bootstrap animation


【解决方案1】:

您可以使用简单的 js/jQuery 字符串操作来模拟 writeerase 函数

$(document).ready(function() {
  // take origin text
  var text = $('#content').text();
  // make content empty
  $('#content').text('');

  write(text);
});

function write(text) {
  var currentLetter = 0;
  var timer;

  //add letter by letter
  timer = setInterval(function() {
    $('#content').append(text[currentLetter]);

    // if it's end of text, call erase function.
    if (currentLetter == text.length) {
      clearInterval(timer);
      setTimeout(function() {erase(text);}, 1000);
    }

    currentLetter++;
  }, 2);
}

function erase(text) {
  var timer = '';
  var currentLetter = text.length - 1;

  // remove one letter from the end of text
  timer = setInterval(function() {
    $('#content').text(text.substring(0, currentLetter));

    // if no more text - write text back;
    if (currentLetter == 0) {
      clearInterval(timer);
      setTimeout(function() {write(text);}, 1000);
    }

    currentLetter--;
  }, 2);
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<span id="content">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin mauris arcu, auctor nec dui ut, accumsan imperdiet sapien. Cras eu varius dolor. Quisque tempus dapibus mattis. Donec tempus eleifend iaculis. Vivamus suscipit dui eu finibus consectetur. Curabitur dapibus ut mi quis vehicula. Vivamus vehicula lectus metus. In ex leo, fermentum sit amet laoreet at, tempus at urna. Quisque et ligula eget arcu convallis consectetur vel venenatis neque. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Fusce mollis risus in commodo bibendum. Donec lorem diam, auctor vel lectus vel, hendrerit semper nibh.</span>

【讨论】:

  • 如何在此处添加多个文本或标题?
  • @salesforceDeveloper 将选择器移动到不同的全局变量,应用于类等
【解决方案2】:

希望这可能会有所帮助,我正在尝试使文本行都具有透明背景。

<div class="container">
  <div class="row">
    <div class="col-12">
      <div class="typing-animation-container">
        <h2 style="background-color: rgba(252, 156, 249, 0)">
          As Your Trusted IT Partner,
        </h2>

        <div class="d-flex justify-content-start align-items-center mt-1">
          <div class="typed-strings">
            <div class="typed">&nbsp;</div>

            <h3 style="background-color: rgba(252, 156, 249, 0)">
              This is a test
            </h3>

            <p>
              we maintain your existing systems for mission-critical success
            </p>

            <p>we enhance your systems to meet required efficiencies</p>

            <p>we develop new systems to meet continuing demand</p>

            <p>we predict what systems you will need in the future</p>
          </div>

          <div class="typed">&nbsp;</div>
        </div>
      </div>
    </div>
  </div>
</div>

【讨论】:

  • 欢迎来到 Stack Overflow!虽然您的回答可能会解决问题,但 including an explanation 关于如何以及为什么解决问题将真正有助于提高您的帖子质量,并可能导致更多的赞成票。请记住,您正在为将来的读者回答问题,而不仅仅是现在提问的人。您可以编辑您的答案以添加解释并指出适用的限制和假设。 - From Review
【解决方案3】:

提炼以上代码后:

$(document).ready(function() {
  // take origin text
  var text = $('#content').text();
  // make content empty
  $('#content').text('');

  write(text);
});

function write(text) {
  var currentLetter = 0;
  var timer;

  //add letter by letter
  timer = setInterval(function() {
    $('#content').append(text[currentLetter]);

    // if it's end of text, call erase function.
    if (currentLetter == text.length) {
      clearInterval(timer);
      setTimeout(function() {erase(text);}, 1000);
    }

    currentLetter++;
  }, 20);
}

function erase(text) {
  var timer = '';
  var currentLetter = text.length - 1;

  // remove one letter from the end of text
  timer = setInterval(function() {
    $('#content').text(text.substring(0, currentLetter));

    // if no more text - write text back;
    if (currentLetter == 0) {
      clearInterval(timer);
      setTimeout(function() {write(text);}, 1000);
    }

    currentLetter--;
  }, 100);
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<span id="content">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin mauris arcu, auctor nec dui ut, accumsan imperdiet sapien. Cras eu varius dolor. Quisque tempus dapibus mattis. Donec tempus eleifend iaculis. Vivamus suscipit dui eu finibus consectetur. Curabitur dapibus ut mi quis vehicula. Vivamus vehicula lectus metus. In ex leo, fermentum sit amet laoreet at, tempus at urna. Quisque et ligula eget arcu convallis consectetur vel venenatis neque. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Fusce mollis risus in commodo bibendum. Donec lorem diam, auctor vel lectus vel, hendrerit semper nibh.</span>|

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-02-07
    • 1970-01-01
    • 2010-11-24
    • 1970-01-01
    • 2019-06-03
    • 2019-03-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多