javascript - 淡入新元素的可靠方法

标签 javascript css fadein

在我的应用程序中,我每秒创建一个新元素。它们应该在创建时淡入。这是我的做法:

window.setInterval(() => {
    const element = document.createElement('div');
    element.classList.add('dot', 'hidden');
    document.getElementById('content').appendChild(element);
    element.classList.remove('hidden');
}, 1000);
.dot {
    display: inline-block;
    width: 10px;
    height: 10px;
    border-radius: 50%;
    background-color: rgba(255, 255, 255, .7);
    margin: 0 5px 5px 0;
    transition: opacity 1s;
}

.hidden {
    opacity: 0;
}

我原以为这会让过渡工作成功​​,但事实并非如此。我还尝试在延迟后删除 hidden 类,如下所示:

setTimeout(() => element.classList.remove('hidden'), 100);

这很有趣,因为它只有在延迟足够长的情况下才有效。如果我将它设置为 10 毫秒,一些点会淡入,而另一些会立即出现。

有没有更好、更简单、更可靠的方法让它工作,而不用猜测 setTimeout() 的延迟?

最佳答案

你可以使用 CSS animations如果您想要的是简单的淡入效果,请避免使用 JavaScript。这只会在 DOM 节点被绘制到屏幕上时运行。如果您需要对动画进行更高级的控制,则可以使用 JS。

@keyframes fadein {
  from {
    opacity: 0;
  }

  to {
    opacity: 1;
  }
}

.dot {
   display: inline-block;
    width: 10px;
    height: 10px;
    border-radius: 50%;
    background-color: rgba(255, 255, 255, .7);
    margin: 0 5px 5px 0;
    animation: 1s linear fadein;
 }

关于javascript - 淡入新元素的可靠方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56718813/

相关文章:

javascript - jQuery 淡入事件?

javascript - 页面刷新后如何保持onclick功能

javascript - 文本区域字符计数器

javascript - 我如何才能仅按 NodeJS 中 ISODate 字段上的日期进行分组

javascript - Facebook 在流中部分 Conceal 滚动条

javascript - 使用 .stop() 后悬停卡住时的 jQuery fadeIn 和 fadeOut

javascript - 根据功能制作简单的动态搜索栏,并带有值

jquery - 使用 jquery 设置 css 后,CSS 媒体查询停止工作

html - 小部件开发 : I need to develop a specific countdown widget

javascript - jQuery fadeIn() 位于 if 和 else 之间