javascript - 最后插入的元素闪烁颜色

标签 javascript css

我有一个实时提要,每隔几秒就会带来一些东西。我想突出显示新输入的信息,以便监视提要的人可以看到发生了变化。

现在每个元素在调用动画时都会闪烁。如何才能使最后插入的元素突出显示?

必须使用纯 javascript 且无插件。

var doc = document.getElementById('results');

function next(i) {
  setTimeout(function() {
    doc.innerHTML = '<p>Hi ' + i + '<p>' + doc.innerHTML;
    next(++i);
  }, 1000);
}
next(1);
@keyframes highlight {
  0% {
    background: red
  }
  100% {
    background: none;
  }
}

p {
  animation: highlight 1s;
}
<div id="results">

</div>

编辑

我可以使用 first-child,但如果我有批量更新,它不会选择所有的。

var doc = document.getElementById('results');

function next(i) {
  setTimeout(function() {
    doc.innerHTML = '<p>Hi1 ' + i + '<p>'+'<p>Hs2 ' + i + '<p>' + doc.innerHTML;
    next(++i);
  }, 1000);
}
next(1);
@keyframes highlight {
  0% {
    background: red
  }
  100% {
    background: none;
  }
}

p:first-child {
  animation: highlight 1s;
}
<div id="results">

</div>

最佳答案

我不得不问,你是故意使用 innerHtml 的吗?这是非常低效的(引用 this post )。您最好创建 DOM 元素并将它们附加到您的容器中。这也将使您拥有更通用的解决方案。

它还允许您使用选择器(例如类)来突出显示,并且批量更新将继续有效。

JSFiddle

我确实将其更改为只运行 10 次:

HTML

<div id="results">
</div>

CSS

@keyframes highlight {
  0% {
    background: red
  }
  100% {
    background: none;
  }
}

.child {
  animation: highlight 1s;
}

JS

var doc = document.getElementById('results');

function next(i) {
    if(i < 10) {
  setTimeout(function() {
    var div = document.createElement("div");
    div.className = "child";
    div.textContent = "Hi " + i;
    doc.insertBefore(div, doc.firstChild);
    next(++i);
  }, 1000);
  }
}
next(1);

关于javascript - 最后插入的元素闪烁颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38062076/

相关文章:

asp.net - 在 JavaScript 代码中嵌入常量服务器端标签的最佳方法是什么?

javascript - Django下拉[onChange]框包含选定的值但无法获取选定的值

javascript - 在元素中查找元素的更好方法

javascript - 不显示以前的语句 (ng-show)

javascript - jquery 内联图像淡入淡出以及 <span> 中的标题

css - CSS 和 Uploadify 的 hideButton 的奇怪故障

javascript - 相同的代码在不同的 IDE 中不起作用 - html、css

css - 如果有一个 style.css 和一个 style.min.css 并且我链接到 style.css 浏览器会使用 .min.css 吗?

html - Mobile Safari iPad 中视频元素的垂直居中位置为 "full screen"

javascript - 短父元素中 float 图像上不需要的底部边距