首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >压缩类并更改属性

压缩类并更改属性
EN

Stack Overflow用户
提问于 2020-11-02 17:48:32
回答 1查看 14关注 0票数 0

我有一个有5个状态(0 - 5)的圆环图。我在一个Vue应用程序中使用它,圆环图的状态根据信息而变化。

我已经创建了5个类来表示图表的5个步骤。步骤0= 0%,步骤1= 20%,依此类推。svg元素接受一个stroke-dasharray属性,这显示了图表被填充的程度。

因此,我为这些步骤创建了5个css类:

代码语言:javascript
复制
.donut-segment-0 {
    animation: donut0 1s;
}

@keyframes donut0{
    0% {
        stroke-dasharray: 0, 100;
    }
    100% {
        stroke-dasharray: 0, 100;
    }
}

.donut-segment-1 {
    animation: donut1 1s;
}

@keyframes donut1{
    0% {
        stroke-dasharray: 0, 100;
    }
    100% {
        stroke-dasharray: 20, 80;
    }
}

.donut-segment-2 {
    animation: donut2 1s;
}

@keyframes donut2{
    0% {
        stroke-dasharray: 20, 80;
    }
    100% {
        stroke-dasharray: 40, 60;
    }
}

.donut-segment-3 {
    animation: donut3 1s;
}

@keyframes donut3{
    0% {
        stroke-dasharray: 40, 60;
    }
    100% {
        stroke-dasharray: 60, 40;
    }
}

.donut-segment-4 {
    animation: donut4 1s;
}

@keyframes donut4{
    0% {
        stroke-dasharray: 60, 40;
    }
    100% {
        stroke-dasharray: 80, 20;
    }
}

.donut-segment-5 {
    animation: donut5 1s;
}

@keyframes donut5{
    0% {
        stroke-dasharray: 80, 20;
    }
    100% {
        stroke-dasharray: 100, 00;
    }
}

我想知道是否有可能简化一下这个问题。这里面有一个简单的逻辑。在每个步骤中,我将stroke-daskarray更改为20,并调用特定的动画。

EN

回答 1

Stack Overflow用户

发布于 2020-11-02 18:56:09

我花了一点时间,但还是弄明白了:

代码语言:javascript
复制
@for $i from 0 through 5 {
  .donut-step-#{$i} {
    animation: donut-#{$i} 1s;
  }

  @keyframes donut-#{$i} {
    0% {
        stroke-dasharray: ($i - 1) * 20, 100 - (($i - 1) * 20);
    }
    100% {
        stroke-dasharray: $i * 20, 100 - ($i * 20);
    }
  }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64643176

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档