个纯CSS实现的Loading特效是一个非常简单而实用的选择,它由三个圆圈横向排列,并不断闪烁。这种动画效果很适合用于页面加载过程中,为用户提供一个愉悦的等待体验。
在这个特效的设计中,使用了CSS的animation属性来实现圆圈的闪烁效果。这个特效的实现并没有用到任何JavaScript,这意味着它可以帮助提升网站的性能,同时也减少了代码的复杂性。
这个特效的视觉效果非常出色,它为用户提供了一个简单而美观的等待界面。如果您正在寻找一个简单而实用的加载动画,那么这个纯CSS实现的3个圆圈横向排列不断闪烁的Loading特效一定会是一个不错的选择。
希望这个特效能够为您的网站增添一些活力和趣味性!
文将介绍如何使用纯CSS实现一个有趣的Loading特效。这个特效将展示9个圆圈在不断闪烁,看起来非常有趣。
首先,我们需要在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代码:
.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
*请认真填写需求信息,我们会在24小时内与您取得联系。