整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

纯CSS实现3个圆圈横向排列不断闪烁的Loading特效



个纯CSS实现的Loading特效是一个非常简单而实用的选择,它由三个圆圈横向排列,并不断闪烁。这种动画效果很适合用于页面加载过程中,为用户提供一个愉悦的等待体验。

在这个特效的设计中,使用了CSS的animation属性来实现圆圈的闪烁效果。这个特效的实现并没有用到任何JavaScript,这意味着它可以帮助提升网站的性能,同时也减少了代码的复杂性。

这个特效的视觉效果非常出色,它为用户提供了一个简单而美观的等待界面。如果您正在寻找一个简单而实用的加载动画,那么这个纯CSS实现的3个圆圈横向排列不断闪烁的Loading特效一定会是一个不错的选择。

希望这个特效能够为您的网站增添一些活力和趣味性!

文将介绍如何使用纯CSS实现一个有趣的Loading特效。这个特效将展示9个圆圈在不断闪烁,看起来非常有趣。

HTML结构

首先,我们需要在HTML中创建9个圆圈的结构。这可以通过使用div元素并给它们不同的类名来实现。以下是HTML代码:

<div class="loading">
    <div></div>
    <div></div>
    <div></div>
    <div></div>
    <div></div>
    <div></div>
    <div></div>
    <div></div>
    <div></div>
</div


CSS样式

接下来,我们需要使用CSS样式来使这些圆圈闪烁。我们将使用关键帧动画来实现这个效果。以下是CSS代码:

.loading,
.loading > div {
  position: relative;
  box-sizing: border-box;
}

.loading {
  display: block;
  font-size: 0;
  color: #000;
}

.loading.la-dark {
  color: #333;
}

.loading > div {
  display: inline-block;
  float: none;
  background-color: currentColor;
  border: 0 solid currentColor;
}

.loading {
  width: 36px;
  height: 36px;
}

.loading > div {
  width: 8px;
  height: 8px;
  margin: 2px;
  border-radius: 100%;
  animation-name: ball-grid-beat;
  animation-iteration-count: infinite;
}

.loading > div:nth-child(1) {
  animation-duration: 0.65s;
  animation-delay: 0.03s;
}

.loading > div:nth-child(2) {
  animation-duration: 1.02s;
  animation-delay: 0.09s;
}

.loading > div:nth-child(3) {
  animation-duration: 1.06s;
  animation-delay: -0.69s;
}

.loading > div:nth-child(4) {
  animation-duration: 1.5s;
  animation-delay: -0.41s;
}

.loading > div:nth-child(5) {
  animation-duration: 1.6s;
  animation-delay: 0.04s;
}

.loading > div:nth-child(6) {
  animation-duration: 0.84s;
  animation-delay: 0.07s;
}

.loading > div:nth-child(7) {
  animation-duration: 0.68s;
  animation-delay: -0.66s;
}

.loading > div:nth-child(8) {
  animation-duration: 0.93s;
  animation-delay: -0.76s;
}

.loading > div:nth-child(9) {
  animation-duration: 1.24s;
  animation-delay: -0.76s;
}

@keyframes ball-grid-beat {
  0% {
    opacity: 1;
  }

  50% {
    opacity: 0.35;
  }

  100% {
    opacity: 1;
  }
}

我们首先设置了一个圆圈容器 .loading,使其垂直居中。然后,我们创建了一堆div样式,这将是所有圆圈的基本样式。接下来,我们为每个圆圈设置了不同的背景颜色,并为它们添加了一个名为ball-grid-beat的关键帧动画。这个动画将使圆圈在1秒内从不透明到半透明来回变化。

最后,我们定义了这个动画的关键帧。我们将圆圈的不透明度从1降到0.35,然后在动画返回时恢复到1。


结论

通过使用HTML和CSS,我们已经成功地创建了一个有趣的Loading特效,其中9个圆圈不断闪烁。您可以在自己的网站或项目中使用这个特效,以增加用户体验和视觉吸引力。

有次看电影, 看到屏幕上一个个的文字蹦出来, 感觉像是有人在打字一样, 觉得挺有意思, 于是这里也用js实现了一个。

效果预览


最简单的打字效果

只要五行代码, 这里直接贴出来:

const dom = document.querySelector('.content')
const data = '最简单的打字效果代码'.split('')
    let index = 0
    function writing(index) {
        if (index < data.length) {
            dom.innerHTML += data[index]
            setTimeout(writing.bind(this), 200, ++index)
        }
    }

是不是超级简单, 现在只要执行这个函数, 你就能看到这样的效果了:

实现原理:

通过setTimeout设置一个时间的间隔, 每隔一定时间向dom中插入对应的数据, 并将index加1, 然后重新调用这个写函数。

在字的后面加上模拟的闪烁光标

思路:

通过一个伪类after将光标定在dom的最后面, 并给一个显示隐藏的循环动画模拟光标的闪烁

::after{
    content: '|';
    animation: blink 1s infinite
}
@keyframes blink{
    from{
        opacity: 0;
    }
    to{
        opacity: 1;
    }
}

通过css3的animation我们就实现了一个闪烁的光标效果。

实现:

我们可以把上面的代码放在一个class中, 然后我们执行writing时将这个class加到对应的dom中即可。

实现输入汉字加拼音

这里依赖一个插件pinyin, 大家可以通过npm安装

npm install pinyin

使用也很简单,我们只要把文本传入这个插件的方法中, 返回的就是每个汉字的拼音的数组。

import Pinyin from 'pinyin'
let data = '汉字'
let pinyinData = Pinyin(data)       //['han', 'zi']

然后我们通过模板字符串注入到对应的文字后面即可:

this.content.innerHTML += `${arr[index]}<sup>(${pinyinData[index]})</sup>`

这样就实现了加拼音的简单效果了。

加动画

加动画的代码也很简单, 关键是思路。

我开始的想法是将每个文字用span标签包裹起来, 给每个span加动画即可。后来发现这样行不通, 因为每次dom中的innerHTML其实是重新渲染的, 那样的话, 之前的span也会一直有动画, 这不是我们想要的效果。

解决方案:

给每个span加个class实现动画, 但在下个span渲染时清除之前span的class, 这样就实现了只有当前的span有动画了.

我这里直接选择了正则匹配粗暴的将class去掉。大家也可以寻找一种更好的方式解决。

代码如下:

this.content.innerHTML = this.content.innerHTML.replace(/span-animation/g, '') + `<span class="span-animation">${arr[index]}</span>`

实现效果:



后话

这并非最佳实践, 只是偶然所想, 给各位道友提供个思路,抛砖引玉, O(∩_∩)O哈哈~

源自:https://juejin.im/post/5ddf55835188257313541581