css实现环形进度条

简介: css实现环形进度条

效果:

css实现进度条,这里用到的核心属性为box-showbox-show可以控制元素的阴影,通过控制元素阴影的移动位置来实现进度条效果。

.box{
   box-show : 0px 0px 0px 0px #ccc;
}

box-show5个参数

  • 第一个参数: 控制元素阴影的左右位置
  • 第二个参数: 控制元素阴影的上下位置
  • 第三个参数: 控制元素阴影的模糊程度
  • 第四个参数: 控制元素阴影的大小(放大&缩小)
  • 第五个参数: 设置元素阴影的颜色

前四个参数部分可以省略,例如,box-show: 0px 0px 2px #ccc,这一句就是设置2px的模糊阴影,颜色为#ccc

下面是代码部分:

<div class="container">
     <div class="shadow">Hover Me</div>
</div>
/* 使用 scss */
$color: #e91e63;
.container{
    position: relative;
    overflow: hidden;
    width: 124px;
    height: 124px;
    margin: 0 auto;
    border-radius: 50%;
}
.shadow{
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50% , -50%);
    width: 120px;
    height: 120px;
    line-height: 120px;
    border-radius: 50%;
    color: #fff;
    font-size: 20px;
    cursor: pointer;
    box-shadow: 60px -60px 0 2px $color,-60px -60px 0 2px $color,-60px 60px 0 2px $color,60px 60px 0 2px $color;
    text-align: center;
    /* 
    &表示嵌套的上一级对象 这里就指的是shadow
    border 动画名称
    0.5s 持续时间
    ease 慢速开始,然后加快,慢速结束
    forwards 元素保留最后关键帧设置的样式
    */
    &:hover {
        animation: border 0.5s ease forwards;
    }
}
@keyframes border{
  // 先hover隐藏(透明)右上方的线
  0% {
    box-shadow: 60px -60px 0 2px $color, -60px -60px 0 2px $color, -60px 60px 0 2px $color, 60px 60px 0 2px $color, 0 0 0 2px transparent;
  }
//   右上方的线变成白色
  25% {
    box-shadow: 0 -125px 0 2px $color, -60px -60px 0 2px $color, -60px 60px 0 2px $color, 60px 60px 0 2px $color, 0 0 0 2px #fff;
  }
//   左上方的线变成白色
  50% {
    box-shadow: 0 -125px 0 2px $color, -125px 0px 0 2px $color, -60px 60px 0 2px $color, 60px 60px 0 2px $color, 0 0 0 2px #fff;
  }
//   左下方的线变成白色
  75% {
    box-shadow: 0 -125px 0 2px $color, -125px 0px 0 2px $color, 0px 125px 0 2px $color, 60px 60px 0 2px $color, 0 0 0 2px #fff;
  }
//   右下方的线变成白色
  100% {
    box-shadow: 0 -125px 0 2px $color, -125px 0px 0 2px $color, 0px 125px 0 2px $color, 120px 40px 0 2px $color, 0 0 0 2px #fff;
  } 
}

步骤解释:

这个动画实际上是用了两个box,外层的box比内层的box4px,左右折算下来分别为左右2px,所以可以看到有一条红色的边线,这个边线其实就是内层box的阴影,超出的部分被外层boxoverflow: hidden隐藏了。

box-shadow: 60px -60px 0 2px $color,-60px -60px 0 2px $color,-60px 60px 0 2px $color,60px 60px 0 2px $color;

这里的box-show用了4个阴影,每个阴影所在的位置分别是右上、左上、左下、右下,各占一半,加起来就是一个圆形,然后在动画的每25%移动对应阴影的位置,并且在当前阴影上加第5个阴影,位置和模糊度都为0,放大2px,颜色为白色,所以可以看到白色的线在移动,其实就是移动了盖住的阴影没有盖住的地方以白色的阴影(线)展示


animation属性解释:

animation: border 0.5s ease forwards;
  • border : 动画的名字
  • 0.5s : 动画持续时间
  • ease :指定从慢速开始,然后加快,然后缓慢结束的动画(默认)
  • forwards :元素将保留由最后一个关键帧设置的样式值

关于动画的字段信息,请看w3school上关于动画的字段解释。

目录
相关文章
|
1月前
|
前端开发 JavaScript
uniapp纯CSS实现圆形进度条组件
uniapp纯CSS实现圆形进度条组件
88 0
|
6月前
|
移动开发 HTML5
HTML5/CSS3粒子效果进度条代码
HTML5/CSS3进度条应用。这款进度条插件在播放进度过程中出现粒子效果,就像一些小颗粒从进度条上散落下来
62 0
HTML5/CSS3粒子效果进度条代码
|
前端开发 容器
N 种仅仅使用 HTML/CSS 实现各类进度条的方式 (下)
N 种仅仅使用 HTML/CSS 实现各类进度条的方式 (下)
605 0
N 种仅仅使用 HTML/CSS 实现各类进度条的方式 (下)
|
移动开发 前端开发 HTML5
N 种仅仅使用 HTML/CSS 实现各类进度条的方式 (上)
N 种仅仅使用 HTML/CSS 实现各类进度条的方式
1005 0
N 种仅仅使用 HTML/CSS 实现各类进度条的方式 (上)
|
前端开发 JavaScript
不可思议的纯 CSS 滚动进度条效果
不可思议的纯 CSS 滚动进度条效果
216 0
不可思议的纯 CSS 滚动进度条效果
|
前端开发 固态存储 JavaScript
【SSD系列】雪花飘,购物抛物线,进度条等四个案列,带入走进 CSS transition
Transition事件的触发次数是非复合的过渡属性的个数, 比如width, height同时变换,那么就是两次。 还比较有趣的事, 比如hover到某元素的时候,开始变换,没变换结束,你就离开。 变换效果会倒着来。上面的demo,就会看到。
181 0
【SSD系列】雪花飘,购物抛物线,进度条等四个案列,带入走进 CSS transition
|
移动开发 前端开发 HTML5
每日一点前端-6-html5+css3有意思的进度条
每日一点前端-6-html5+css3有意思的进度条
88 0
|
前端开发 JavaScript HTML5
html+css+js 快速打造进度条
html进度条在web播放器中很常见,之前html并没有进度条这个标签,html5后出了一个progress标签作为进度条,但是并不是很好用,那么接下来,我们将用css+html+js实现进度条效果,无需任何三方框架。
4589 0
10款CSS3进度条Loading动画
在线演示 本地下载
1172 0
CSS3环形动画菜单
在线演示 本地下载
1403 0