广告
返回顶部
首页 > 资讯 > 精选 >CSS3如何制作圆形滚动进度条动画
  • 834
分享到

CSS3如何制作圆形滚动进度条动画

2023-06-08 02:06:33 834人浏览 薄情痞子
摘要

小编给大家分享一下css3如何制作圆形滚动进度条动画,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!内  容    

小编给大家分享一下css3如何制作圆形滚动进度条动画,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

内  容

      先看一下效果图,会提升我们的学习兴趣哟:

CSS3如何制作圆形滚动进度条动画

     好的,我将按照此图从上到下的顺序讲解,由于第一和第二种效果之气那篇博客《CSS实现进度条和订单进度条》已经介绍过怎么做的了,这里就把重心放在动画上面,对于圆形效果是重点,我将详细讲解。

第一种效果:

html结构:

<div id="progress">      <span></span></div>

css样式:

#progress{            width: 50%;            height: 30px;            border:1px solid #ccc;            border-radius: 15px;            margin: 50px 0 0 100px;            overflow: hidden;            box-shadow: 0 0 5px 0px #DDD inset;        }        #progress span {            display: inline-block;            width: 100%;            height: 100%;            background: #2989d8;             background: -moz-linear-gradient(45deg, #2989d8 33%, #7db9e8 34%, #7db9e8 59%, #2989d8 60%);             background: -WEBkit-gradient(linear, left bottom, right top, color-stop(33%,#2989d8), color-stop(34%,#7db9e8), color-stop(59%,#7db9e8), color-stop(60%,#2989d8));             background: -webkit-linear-gradient(45deg, #2989d8 33%,#7db9e8 34%,#7db9e8 59%,#2989d8 60%);             background: -o-linear-gradient(45deg, #2989d8 33%,#7db9e8 34%,#7db9e8 59%,#2989d8 60%);             background: -ms-linear-gradient(45deg, #2989d8 33%,#7db9e8 34%,#7db9e8 59%,#2989d8 60%);             background: linear-gradient(45deg, #2989d8 33%,#7db9e8 34%,#7db9e8 59%,#2989d8 60%);             filter: progid:DXImageTransfORM.Microsoft.gradient( startColorstr='#2989d8', endColorstr='#2989d8',GradientType=1 );             background-size: 60px 30px;            text-align: center;            color:#fff;            -webkit-animation:load 3s ease-in;        }        @-webkit-keyframes load{            0%{                width: 0%;            }            100%{                width:100%;            }        }

可以看到其实这种进度条的动画是最容易实现的,根据具体进度百分比设置默认的width百分比和动画里100%处的width百分比就行了,比如说,我想实现70%的进度条动画效果,那么我只需要修改一下两处地方:

#progress span{    width: 70%;}@-webkit-keyframes load{      0%{        width: 0%;      }    100%{        width:70%;      }}

第二种效果:

html结构:

<div id="progressBar">      <!-- 进度条 -->      <div>        <span></span>      </div>      <!-- 五个圆 -->      <span></span>      <span></span>      <span></span>      <span></span>      <span></span> </div>

css样式:

#progressBar{            width: 80%;            height: 50px;            position: relative;            margin: 50px 0 0 100px;        }        #progressBar div{            width: 100%;            height: 10px;            position: absolute;            top:50%;            left: 0;            margin-top:-20px;            background: #ccc;        }        #progressBar div span{            position: absolute;            display: inline-block;            background: green;            height: 10px;            width: 100%;            -webkit-animation:bgLoad 5.5s linear;        }        @-webkit-keyframes bgLoad{            0%{                width: 0%;            }            18.18%,27.27%{                width:25%;            }            45.45%,54.54%{                width: 50%;            }            72.72%,81.81%{                width: 75%;            }            100%{                width:100%;            }        }        #progressBar>span{            position: absolute;            top:0;            margin-top: -10px;            width: 40px;            height: 40px;            border-radius: 50%;            background: #ccc;            margin-left: -20px;            color:#fff;        }        @-webkit-keyframes circleLoad_1{            0%,66.66%{                background: #ccc;            }            100%{                background:green;            }        }        @-webkit-keyframes circleLoad_2{            0%,83.34%{                background: #ccc;            }            100%{                background:green;            }        }        @-webkit-keyframes circleLoad_3{            0%,88.88%{                background: #ccc;            }            100%{                background:green;            }        }        @-webkit-keyframes circleLoad_4{            0%,91.67%{                background: #ccc;            }            100%{                background:green;            }        }        #progressBar span:nth-child(2){            left: 0%;background:green;        }        #progressBar span:nth-child(3){            left: 25%;background:green;            -webkit-animation:circleLoad_1 1.5s ease-in;        }        #progressBar span:nth-child(4){            left: 50%;background:green;            -webkit-animation:circleLoad_2 3s ease-in;        }        #progressBar span:nth-child(5){            left: 75%;background:green;            -webkit-animation:circleLoad_3 4.5s ease-in;        }        #progressBar span:nth-child(6){            left: 100%;background:green;            -webkit-animation:circleLoad_4 6s ease-in;        }

可以看到,其实对于动画本身是很简单的,一看就明白了,主要就是动画持续时间的计算,由于这个动画效果只执行一次,所以其实也可以用动画延迟时间来保证各个动画在指定的时间点开始执行,但是对于循环或者多次动画效果,延迟很不灵活,所以这里还是用持续时间的长短来控制动画的执行时间。

这个订单进度条,我是设置了走一段用时1秒,然后每到一个圆点就停顿0.5秒,而这0.5秒就是相对应的圆点的动画持续执行时间。但是再次强调这个是单次动画,如果想实现循环动画,还是得做调整的,必须让所有动画的持续执行时间是一样的,不然循环起来就错乱的。而时间的改动也会影响动画关键帧的改动,下面对第一小段和第二个圆的动画时间讲解一下:

首先,细长条的动画持续时间通过计算:

4小段x1秒 + 中间3个圆点 x 0.5秒 = 5.5秒

接下来就是计算细长条动画关键帧的时间分配,设每一份0.5秒,那么共总就是11份,每小段得2份,每个圆点得1份,用100%除以11,可得每份大约是9.09%,接下来就是分配时间了,这个就简单了,不多说。

接着,当细长条完成第一小段的动画效果到达第二个圆点时,会停顿0.5秒,而这0.5秒就是第二个圆点的动画时间,所以第二个圆点的动画持续时间就是:

等待细长条执行完1小段 x1秒+自身的动画完成时间x0.5秒=1.5秒

同样的方法计算每一份的时间然后进行分配。同理,其他动画效果相似,就不再赘述了。

第三种效果:

今天就重点讲解这个效果,首先,当有人说你能不能做一个圆形进度条效果出来时,如果是静态完整圆形进度条,那么就很简单了:

.circleprogress{    width: 160px;    height: 160px;    border:20px solid red;    border-radius: 50%;}

CSS3如何制作圆形滚动进度条动画

.circleprogress{    width: 160px;    height: 160px;    border:20px solid red;    border-left:20px solid transparent;    border-bottom:20px solid transparent;    border-radius: 50%;}

CSS3如何制作圆形滚动进度条动画

然后还是会说,这个也不难啦。可是,如果不是刚好都是45度的倍数呢?

OK,我们先设置一个200x200的方块,然后我们在这里面完成我们的效果:

.circleProgress_wrapper{    width: 200px;    height: 200px;    margin: 50px auto;    position: relative;    border:1px solid #ddd;}

CSS3如何制作圆形滚动进度条动画

接下来我将在这个容器里再放两个矩形,每个矩形都占一半:

<div class="circleProgress_wrapper">        <div class="wrapper right">            <div class="circleProgress rightcircle"></div>        </div>        <div class="wrapper left">            <div class="circleProgress leftcircle"></div>        </div> </div>
.wrapper{    width: 100px;    height: 200px;    position: absolute;    top:0;    overflow: hidden;}.right{    right:0;}.left{    left:0;}

CSS3如何制作圆形滚动进度条动画

这里重点说一下.wrapper 的overflow:hidden; 起着关键性作用。这两个矩形都设置了溢出隐藏,那么当我们去旋转矩形里面的圆形的时候,溢出部分就被隐藏掉了,这样我们就可以达到我们想要的效果。

从html结构也已看到,在左右矩形里面还会各自有一个圆形,先讲一下右半圆:

.circleProgress{    width: 160px;    height: 160px;    border:20px solid transparent;    border-radius: 50%;    position: absolute;    top:0;}.rightcircle{    border-top:20px solid green;    border-right:20px solid green;    right:0;}

CSS3如何制作圆形滚动进度条动画

可以看到,效果已经出来了,其实本来是一个半圆弧,但由于我们设置了上边框和右边框,所以上边框有一半溢出而被隐藏了,所以我们可以通过旋转得以还原:

.circleProgress{    width: 160px;    height: 160px;    border:20px solid transparent;    border-radius: 50%;    position: absolute;    top:0;    -webkit-transform: rotate(45deg);}

CSS3如何制作圆形滚动进度条动画

所以只要旋转自己想要的角度就可以实现任意比例的进度条。接下来把左半圆弧也实现,变成一个全圆:

.leftcircle{    border-bottom:20px solid green;    border-left:20px solid green;    left:0;}

CSS3如何制作圆形滚动进度条动画

紧接着,就是让它动起来,原理是这样的,先让右半圆弧旋转180度,再让左半圆弧旋转180度,这样,两个半圆弧由于先后都全部溢出而消失了,所以看起来就是进度条再滚动的效果:

.rightcircle{            border-top:20px solid green;            border-right:20px solid green;            right:0;            -webkit-animation: circleProgressLoad_right 5s linear infinite;        }        .leftcircle{            border-bottom:20px solid green;            border-left:20px solid green;            left:0;            -webkit-animation: circleProgressLoad_left 5s linear infinite;        }        @-webkit-keyframes circleProgressLoad_right{            0%{                -webkit-transform: rotate(45deg);            }            50%,100%{                -webkit-transform: rotate(225deg);            }        }        @-webkit-keyframes circleProgressLoad_left{            0%,50%{                -webkit-transform: rotate(45deg);            }            100%{                -webkit-transform: rotate(225deg);            }        }

CSS3如何制作圆形滚动进度条动画

当然,我们只需要调整一下角度就可以实现反向的效果:

.circleProgress{            width: 160px;            height: 160px;            border:20px solid transparent;            border-radius: 50%;            position: absolute;            top:0;            -webkit-transform: rotate(-135deg);        }        @-webkit-keyframes circleProgressLoad_right{            0%{                -webkit-transform: rotate(-135deg);            }            50%,100%{                -webkit-transform: rotate(45deg);            }        }        @-webkit-keyframes circleProgressLoad_left{            0%,50%{                -webkit-transform: rotate(-135deg);            }            100%{                -webkit-transform: rotate(45deg);            }        }

CSS3如何制作圆形滚动进度条动画

好的,接下来就是奔向最终效果了,正如我们一开始看到的那样,有点像我们使用360卫士清理垃圾时的类似效果,当然不是很像啦:

.circleProgress_wrapper{            width: 200px;            height: 200px;            margin: 50px auto;            position: relative;            border:1px solid #ddd;        }        .wrapper{            width: 100px;            height: 200px;            position: absolute;            top:0;            overflow: hidden;        }        .right{            right:0;        }        .left{            left:0;        }        .circleProgress{            width: 160px;            height: 160px;            border:20px solid rgb(232, 232, 12);            border-radius: 50%;            position: absolute;            top:0;            -webkit-transform: rotate(45deg);        }        .rightcircle{            border-top:20px solid green;            border-right:20px solid green;            right:0;            -webkit-animation: circleProgressLoad_right 5s linear infinite;        }        .leftcircle{            border-bottom:20px solid green;            border-left:20px solid green;            left:0;            -webkit-animation: circleProgressLoad_left 5s linear infinite;        }        @-webkit-keyframes circleProgressLoad_right{            0%{                border-top:20px solid #ED1A1A;                border-right:20px solid #ED1A1A;                -webkit-transform: rotate(45deg);            }            50%{                border-top:20px solid rgb(232, 232, 12);                border-right:20px solid rgb(232, 232, 12);                border-left:20px solid rgb(81, 197, 81);                border-bottom:20px solid rgb(81, 197, 81);                -webkit-transform: rotate(225deg);            }            100%{                border-left:20px solid green;                border-bottom:20px solid green;                -webkit-transform: rotate(225deg);            }        }        @-webkit-keyframes circleProgressLoad_left{            0%{                border-bottom:20px solid #ED1A1A;                border-left:20px solid #ED1A1A;                -webkit-transform: rotate(45deg);            }            50%{                border-bottom:20px solid rgb(232, 232, 12);                border-left:20px solid rgb(232, 232, 12);                border-top:20px solid rgb(81, 197, 81);                border-right:20px solid rgb(81, 197, 81);                -webkit-transform: rotate(45deg);            }            100%{                border-top:20px solid green;                border-right:20px solid green;                border-bottom:20px solid green;                border-left:20px solid green;                -webkit-transform: rotate(225deg);            }        }

可以看到,其实就是多了一些改变不同边框颜色的动画而已,这个就给大家自己去实践吧!主要还是利用两个矩形来完成这么一个圆形进度条效果,特别注意overflow这条规则,起着关键作用。

以上是“CSS3如何制作圆形滚动进度条动画”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网精选频道!

--结束END--

本文标题: CSS3如何制作圆形滚动进度条动画

本文链接: https://www.lsjlt.com/news/250992.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • CSS3如何制作圆形滚动进度条动画
    小编给大家分享一下CSS3如何制作圆形滚动进度条动画,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!内  容    ...
    99+
    2023-06-08
  • CSS3怎么制作圆环形进度条
    这篇文章给大家介绍CSS3怎么制作圆环形进度条,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。首先,当有人说你能不能做一个圆形进度条效果出来时,如果是静态完整圆形进度条,那么就很简单了:...
    99+
    2022-10-19
  • css3怎么制作圆形旋转动画
    这篇文章主要介绍了css3怎么制作圆形旋转动画,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。   使用css3制作旋转动画的步骤   步...
    99+
    2022-10-19
  • css3动画如何使圆形旋转
    今天小编给大家分享一下css3动画如何使圆形旋转的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。css3动画使圆形旋转的方法:...
    99+
    2023-07-05
  • 使用canvas怎么实现一个圆形进度条动画
    这期内容当中小编将会给大家带来有关使用canvas怎么实现一个圆形进度条动画,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。1. canvas的HTML部分很简单就一个canvas标签canvas画布的宽高...
    99+
    2023-06-09
  • CSS3如何实现彩色进度条动画
    这篇文章给大家分享的是有关CSS3如何实现彩色进度条动画的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。简要教程这是一款css3彩色进度条动画特效。该CSS3进度条动画特效中包含了三种动画特效,它们通过HMTL代码...
    99+
    2023-06-08
  • 如何利用CSS3动画实现圆形动态时钟
    小编给大家分享一下如何利用CSS3动画实现圆形动态时钟,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧! 什么是动画?这是我们应该先了解的问题。按照百度百科的解释动画是采用逐帧拍摄对...
    99+
    2022-10-19
  • 如何使用CSS3代码制作页面圆圈加载动画
    这篇文章主要为大家展示了“如何使用CSS3代码制作页面圆圈加载动画”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“如何使用CSS3代码制作页面圆圈加载动画”这篇文...
    99+
    2022-10-19
  • canvas如何实现有递增动画的环形进度条
    这篇文章将为大家详细讲解有关canvas如何实现有递增动画的环形进度条,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。效果如下:高清大图! 码农多年,老眼昏花,动图看不清?!那就看静态截图!!!不...
    99+
    2023-06-09
  • css3如何实现小球滚动和js控制动画暂停
    这篇文章给大家分享的是有关css3如何实现小球滚动和js控制动画暂停 的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。CSS3 可以创建动画,它可以取代许多网页动画图像、Flas...
    99+
    2022-10-19
  • CSS3如何制作皮卡丘动画
    这篇文章给大家分享的是有关CSS3如何制作皮卡丘动画的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。正文效果图PS:由于我这个动画的尺寸做得比较大(720 x 1280),所以为了能录这个gif动画,我缩小了一倍。...
    99+
    2023-06-08
  • react-native如何实现圆弧拖动进度条
    这篇文章主要为大家展示了“react-native如何实现圆弧拖动进度条”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“react-native如何实现圆弧拖动进...
    99+
    2022-10-19
  • CSS3如何制作hover下划线动画
    这篇文章主要介绍了CSS3如何制作hover下划线动画,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。1、前几天看到Hexo的next主题标题...
    99+
    2022-10-19
  • CSS3如何制作蝴蝶飞舞动画
    这篇文章主要为大家展示了“CSS3如何制作蝴蝶飞舞动画”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“CSS3如何制作蝴蝶飞舞动画”这篇文章吧。<!DOCT...
    99+
    2022-10-19
  • Vue中使用js制作进度条式数据对比动画
    本文实例为大家分享了Vue中使用js制作进度条式数据对比动画的具体代码,供大家参考,具体内容如下 实现的效果:(初始化以及浏览器resize的时候两侧的条形为向两侧递增的动画,其中两...
    99+
    2022-11-13
  • 如何使用css3制作动感导航条
    这篇文章主要介绍“如何使用css3制作动感导航条”,在日常操作中,相信很多人在如何使用css3制作动感导航条问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何使用css3制作...
    99+
    2022-10-19
  • CSS3如何制作幻灯片切换动画
    这篇文章将为大家详细讲解有关CSS3如何制作幻灯片切换动画,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。<!DOCTYPE html> <ht...
    99+
    2022-10-19
  • 如何使用纯CSS实现滚动进度条效果
    这篇文章将为大家详细讲解有关如何使用纯CSS实现滚动进度条效果,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。什么是csscss是一种用来表现HTML或XML等文件样式的计算机语言,主要是用来设计网页的样式...
    99+
    2023-06-14
  • 如何使用CSS3制作一个简单的进度条
    小编给大家分享一下如何使用CSS3制作一个简单的进度条,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!这里只是一个小demo,一个用CSS3写的进度条。如图所示:具体代码如下:<!DOCTYPE HTML&n...
    99+
    2023-06-08
  • 使用Compose制作抖音快手视频进度条Loading动画效果
    目录引言Loading效果BoxWithConstraints代码animateFloat获取动画更新值线条动画值执行渐隐最终效果引言 现在互联网产品,感觉谁家的App不整点视频功能...
    99+
    2022-11-13
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作