加载屏幕上的三点 CSS 动画

the*_*uls 7 css css-animations reactjs

我有一个简单的加载屏幕,我希望在文本末尾一次出现一个点。

不幸的是,当我希望一次出现一个然后重新开始时,我只能让它们眨眼。

我目前正在使用淡入淡出的动画,如下所示:

@keyframes fadeIn {
    0% { opacity: 0 }
    100% { opacity: 1 }
}
Run Code Online (Sandbox Code Playgroud)

这是我所拥有的示例:

const App = () => {

  return (
  <h1>
    Loading<span>.</span><span>.</span><span>.</span>
  </h1>
  )
}


ReactDOM.render(
    <App />,
    document.getElementById('app')
);
Run Code Online (Sandbox Code Playgroud)
@keyframes fadeIn {
    0% { opacity: 0 }
    100% { opacity: 1 }
}

span:nth-child(1) {
  opacity: 0;
  animation: fadeIn 500ms infinite;
}
span:nth-child(2) {
  opacity: 0;
  animation: fadeIn 500ms infinite;
  animation-delay: 500ms;
}
span:nth-child(3) {
  opacity: 0;
  animation: fadeIn 500ms infinite;
  animation-delay: 1000ms;
}
Run Code Online (Sandbox Code Playgroud)
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.8.0/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.8.0/umd/react-dom.production.min.js"></script>
<div id="app"></div>
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,目前,它确实一次显示一个,但随后所有三个都闪烁。我怎样才能让他们一次显示一个,然后重新开始?

Tem*_*fif 19

一个更简单的想法,代码更少:

.loading {
  font-weight: bold;
  display:inline-block;
  font-family: monospace;
  font-size: 30px;
  clip-path: inset(0 3ch 0 0);
  animation: l 1s steps(4) infinite;
}

@keyframes l {
  to {
    clip-path: inset(0 -1ch 0 0)
  }
}
Run Code Online (Sandbox Code Playgroud)
<div class="loading">Loading...</div>
Run Code Online (Sandbox Code Playgroud)

在这里找到更多加载器: https: //css-loaders.com/