javascript - 如何使 div 文本逐行显示而不是一次全部显示?

标签 javascript html css animation watson-assistant

我正在使用 IBM 的 Watson,现在我的文本被 <br> <br> 分割了<br>'s 之间有任意数量的空格.我尝试在 <br>'s 处拆分我的 JSON 文本和映射略有延迟,但它并没有真正起作用。我也试过不透明度和显示摆弄。 Here's a pen构建 HTML DOM 消息元素的代码如何工作。每个有效载荷都放入一个 div 中并同时显示。

我需要在 <br> <br> 处拆分每一行在前一个之后不久出现,就像即时消息效果一样。谢谢!

最佳答案

试试这个,你可能需要改进正则表达式以考虑浏览器的差异......等等:

const target = document.getElementById('target');
const newInnerHTML = target.innerHTML
  .split(/<br>\s*/i)
  .map((text, i) => '<p style="animation-delay:' + (400 * i) + 'ms">' + text + '</p>')
  .join(''); 

target.innerHTML = newInnerHTML;
#target p {
  opacity: 0;
  animation: fade-in 2s forwards;
}

@keyframes fade-in {
  0% {
    opacity: 0;
  }
  100% {
    opacity: 1;
  }
}
<div id="target"> Hi, I'm Watson. <br> <br> I need to appear line by line.
</div>

关于javascript - 如何使 div 文本逐行显示而不是一次全部显示?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50099790/

相关文章:

css - 使用 css 3 显示 <div>

javascript - 如何使 float div成为每行最高元素的高度

php - 不向数据库 : 插入值

html - 如何设置 'label' HTML 元素的 id?

javascript - 如何在 Angular 2+ 中将滚动元素制作成视口(viewport)?

javascript - 使用 JS 单击链接时更改 CSS 中的设置

javascript - ASP.NET/VS2010 在项目中查找未使用的文件

javascript - typescript 循环结束时的回调

javascript - iphone 移动 safari 上的 javascript 是否支持 xpath?

python - 按列组织表格数据