通过CSS实现圆形动态加载条动画效果

5个月前 (08-29) 浅唱丶
6分钟
176
2

在做前端的时候,常用到进度条显示的效果;长条形的进度条是最常见也是比较简单的,如果想独特一些,用圆形的进度条该怎么实现呢?可以用纯CSS实现吗?

当然可以的,下面便分享完整的制作过程。

话不多说,先看最终效果图。

通过CSS实现圆形动态加载条动画效果

(最下方附成品效果源码文件)

逻辑分析

1、如何实现转动的效果呢?先分析一下逻辑,我们先画一个圆。

通过CSS实现圆形动态加载条动画效果

2、然后将圆分为左右两个。

通过CSS实现圆形动态加载条动画效果

3、此时在左右两边中各放一个圆形条,为区分显示左边有蓝色显示,右边用红色显示,此时我们在左右两个框加一个限制,超出框的内容自动隐藏。

通过CSS实现圆形动态加载条动画效果

4、那么便可以实现旋转右边的红条,多余的部分会隐藏掉,同理可得旋转左边的蓝条多余的部分也可会隐藏。

通过CSS实现圆形动态加载条动画效果

5、这样还不能实现我们要的色条逐渐出现的旋转动画,继续我们将左边的红条旋转180度,然后将右边的蓝色条也旋转180度,这样两个色条就全部被隐藏掉。

通过CSS实现圆形动态加载条动画效果

6、此时,开始对隐藏在左边的红色条进行旋转,配合动画,就可以实现进度条的效果啦~

通过CSS实现圆形动态加载条动画效果

理论存在,下面就开始实践。

完整代码

1、添加页面标签


<div class="circle">
<div class="circle-left">
<div class="circle-bar"></div>
</div>
<div class="circle-right">
<div class="circle-bar"></div>
</div>
</div>

2、css样式

.circle{
    position: relative;
    width: 100px;
    height: 100px;
    background:transparent;
    margin:0 auto;
    border-radius: 50%;
    box-shadow: 0px 0px 10px #beddff 
}
.circle::after{
    position:absolute;
    width: 100%;
    height: 100%;
    content: '';
    box-sizing: border-box;
    border-radius: 50%;
    border: 8px solid #beddff;
}
.circle .circle-bar{
    position: absolute;
    top: 0px;
    width: 100%;
    height: 100%;
    box-sizing: border-box;
    border:8px solid #0c95e4;
}
.circle-left{
    position:absolute;
    z-index: 1;
    top: 0;
    left: 0;
    width: 50%;
    height: 100%;
    overflow: hidden;
}
.circle-left .circle-bar{
    left: 100%;
    border-top-right-radius: 50px;
    border-bottom-right-radius: 50px;
    border-left: none;
    transform-origin: center left;
    animation: loading-left 1s linear forwards 1.5s;
}
.circle-right{
    position:absolute;
    z-index: 1;
    top: 0;
    right: 0;
    width: 50%;
    height: 100%;
    overflow: hidden;
}
.circle-right .circle-bar{
    left: -100%;
    border-top-left-radius: 50px;
    border-bottom-left-radius: 50px;
    border-right: none;
    transform-origin: center right;
    animation: loading-right 1.5s linear forwards;
}
/* 动画样式 */
@keyframes loading-right{
    0%{
        transform: rotate(0deg);
    }
    100%{
        transform: rotate(180deg);
    }
}
@keyframes loading-left{
    0%{
        transform: rotate(0deg);
    }
    100%{
        transform: rotate(80deg);
    }
}

O克,成功实现圆形进度条的效果

通过CSS实现圆形动态加载条动画效果

源码正在打包上传中…

本文由:浅唱丶 发布于 小菜的IT网,转载需注明出处:https://www.xiaocaiit.cn/267.html
浅唱丶
作者

相关推荐

2个月前 (11-30)

flex布局内元素无法设置宽度

经常是否FLEX布局会遇到内部的元素无法通过white设置宽度,该如何解决? display:flex FELX内部的子元素不能直接设置width设置宽度,需要通过flex布局指定宽度 flex:0 0 50px; flex参数说明 1、放...
1个月前 (12-23)

Plyr-简单、轻量、灵活的HTML媒体播放器

Plyr 是一个使用 HTML5 开发的基于浏览器上的多媒体播放器,包含自定义的控制选项和 WebVTT 字幕。它是只支持现代浏览器,轻量,方便和可定制的媒体播放器。还有的标题和屏幕阅读器的全面支持。 特性: 可访问性 – 完全...
2个月前 (12-08)

宝塔(bt)面板出现无法打开时怎么办?

出现宝塔面板打不开的情况时怎么办?很多同学都遇到过在安装服务器宝塔面板打不开的情况,有些是导致网站无法打开,有些是网站可以打开但是宝塔面板确无法正常登录的情况,那么是什么原因导致的呢?下面整理了一些常见的解决办法。 1、检查服务器运行状态是...
2个月前 (12-07)

压缩网页使用的字体库(附思源黑体精简版下载)

在做web开发会使用到非标准字体,但是通常在网页中下载的字体库非常大,并且其中大部分都是不常用到的字体。在web项目中运行时会导致缓慢,我们可以通过删除不常用字体的方式减少中文字体库体积。 精简效果 思源黑体是一款可以免费商用的字体,刚好项...

评论

已有1人参与了评论

  • 4个月前 (10-12)

    不错

    来自陕西
    回复

扫一扫关注我们