纯css实现圆环进度加载及数值变动

1,012 阅读1分钟

纯css实现圆环进度加载及数值变动

2021-04-25 15.31.27.gif

CSS 计数函数(counter)

counter计算函数 返回一个代表计数器当前值的字符串。接收两个参数,一个名称一个计数样式counter(name,styleName),name 区分大小写,作为代表当前计数器的名称标识。 styleName 参数是可选的,代表递增数字或者字母的种类,可接受的参数为 list-style-type 所支持的种类。常用的有以下这些:

disc (实心圆点)
circle (空心圆点)
square (实心方块)
decimal (阿拉伯数字 12345...)
lower-roman(罗马数字 i, ii, iii...)
upper-roman (罗马数字 I, II, III, IV...)
simp-chinese-informal (中文计数 一、二、三、....九十九、)
simp-chinese-formal (中文繁体 壹贰叁肆伍...)
lower-latin (小写字母 abcd...)
upper-latin (大写字母 ABCD....)

counter-increment

利用这个属性,计数器可以递增(或递减)某个值,这可以是正值或负值。如果没有提供 number 值,则默认为 1。 注释:如果使用了 "display: none",则无法增加计数。如使用 "visibility: hidden",则可增加计数。

html 部分

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

css 部分

  $color: #e91e63
.container
    position: relative
    overflow: hidden
    width: 124px
    height: 124px
    overflow: hidden
    margin: 100px auto
    border-radius: 50%
    background: black
    .loading 
        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
        // 定义字符
        counter-increment: scale 0
        &:hover
            animation: shadow .5s ease forwards
        &::before
            // 取值scalecounter-increment中后面的值
            content: counter(scale,decimal)'%'             
            display: inline-block
@keyframes shadow
  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
    counter-increment: scale 0
  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
    counter-increment: scale 25
  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
    counter-increment: scale 50
  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
    counter-increment: scale 75
  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
    counter-increment: scale 100

往期精文