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

时间:2018-04-30 11:40:19

标签: javascript html css animation watson-assistant

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

我需要在<br> <br>分割的每一行显示在上一行之后不久,就像即时消息效果一样。谢谢!

1 个答案:

答案 0 :(得分:1)

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

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>