首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么进度条对相同的值显示不同?

为什么进度条对相同的值显示不同?
EN

Stack Overflow用户
提问于 2021-11-12 09:00:40
回答 1查看 40关注 0票数 0

我正在使用HTML和CSS的圆形进度条工作。HTML内容在for循环下。在这里,我尝试使用相同的5%,但进度结果不同

代码语言:javascript
复制
   .progress{
        width: 120px;
        height: 120px;
        line-height: 120px;
        background: none;
        margin: 0 auto;
        box-shadow: none;
        position: relative;
    }
    .progress:after{
        content: "";
        width: 100%;
        height: 100%;
        border-radius: 50%;
        border: 15px solid #f2f5f5;
        position: absolute;
        top: 0;
        left: 0;
    }
    .progress > span{
        width: 50%;
        height: 100%;
        overflow: hidden;
        position: absolute;
        top: 0;
        z-index: 1;
    }
    .progress .progress-left{
        left: 0;
    }
    .progress .progress-bar{
        width: 100%;
        height: 100%;
        background: none;
        border-width: 12px;
        border-style: solid;
        position: absolute;
        top: 0;
    }
    .progress .progress-left .progress-bar{
        left: 100%;
        border-top-right-radius: 80px;
        border-bottom-right-radius: 80px;
        border-left: 0;
        -webkit-transform-origin: center left;
        transform-origin: center left;
    }
    .progress .progress-right{
        right: 0;
    }
    .progress .progress-right .progress-bar{
        left: -100%;
        border-top-left-radius: 80px;
        border-bottom-left-radius: 80px;
        border-right: 0;
        -webkit-transform-origin: center right;
        transform-origin: center right;
        animation: loading-1 1.8s linear forwards;
    }
    .progress .progress-value{
        width: 100%;
        height: 100%;
        font-size: 14px;
        font-weight: bold;
        text-align: center;
        position: absolute;
    }
    .progress .progress-value.red {
        color: #f74d4d;
    }
    .progress .progress-value.dark-yellow {
        color: #f78c4d;
    }
    .progress .progress-value.yellow {
        color: #f7f24d;
    }
    .progress .progress-value.green {
        color: #28b779;
    }
    .progress.red .progress-bar{
        border-color: #f74d4d;
    }
    .progress.red .progress-left .progress-bar{
        animation: loading-2 1.5s linear forwards 1.8s;
    }
    .progress.dark-yellow .progress-bar{
        border-color: #f78c4d;
    }
    .progress.dark-yellow .progress-left .progress-bar{
        animation: loading-4 0.4s linear forwards 1.8s;
    }
    .progress.yellow .progress-bar{
        border-color:#f7f24d;
    }
    .progress.yellow .progress-left .progress-bar{
        animation: loading-3 1s linear forwards 1.8s;
    }
    .progress.green .progress-bar{
        border-color: #28b779;
    }
    .progress.green .progress-left .progress-bar{
        animation: loading-5 1.2s linear forwards 1.8s;
    }
    .progress > span {
        background-color: none;
    }
    @keyframes loading-1{
        0%{
            -webkit-transform: rotate(0deg);
            transform: rotate(0deg);
        }
        100%{
            -webkit-transform: rotate(180deg);
            transform: rotate(180deg);
        }
    }
    @keyframes loading-2{
        0%{
            -webkit-transform: rotate(0deg);
            transform: rotate(0deg);
        }
        100%{
            -webkit-transform: rotate(144deg);
            transform: rotate(144deg);
        }
    }
    @keyframes loading-3{
        0%{
            -webkit-transform: rotate(0deg);
            transform: rotate(0deg);
        }
        100%{
            -webkit-transform: rotate(90deg);
            transform: rotate(90deg);
        }
    }
    @keyframes loading-4{
        0%{
            -webkit-transform: rotate(0deg);
            transform: rotate(0deg);
        }
        100%{
            -webkit-transform: rotate(36deg);
            transform: rotate(36deg);
        }
    }
    @keyframes loading-5{
        0%{
            -webkit-transform: rotate(0deg);
            transform: rotate(0deg);
        }
        100%{
            -webkit-transform: rotate(126deg);
            transform: rotate(126deg);
        }
    }
    @media only screen and (max-width: 990px){
        .progress{ margin-bottom: 20px; }
    }
代码语言:javascript
复制
<div class="component-progress-info">
    <div class="component-progress">
        <div class="progress <?php echo $componentclass; ?>">
            <span class="progress-left">
                <span class="progress-bar"></span>
            </span>
            <span class="progress-right">
                <span class="progress-bar"></span>
            </span>
            <div class="progress-value red">5%</div>
        </div>
    </div>
    <div class="component-info">
        
    </div>
</div>

我在for-loop中有html。但这导致了我不同的反应

EN

回答 1

Stack Overflow用户

发布于 2021-11-12 11:37:43

查看CSS (只查看相关部分):

代码语言:javascript
复制
.progress.red .progress-left .progress-bar{
  animation: loading-2 1.5s linear forwards 1.8s;
}
.progress.dark-yellow .progress-left .progress-bar{
  animation: loading-4 0.4s linear forwards 1.8s;
}
.progress.yellow .progress-left .progress-bar{
  animation: loading-3 1s linear forwards 1.8s;
}
.progress.green .progress-left .progress-bar{
  animation: loading-5 1.2s linear forwards 1.8s;
}

不同的颜色设置为使用不同的关键帧,例如loading-3表示黄色,loading-5表示绿色,如上所述。

然后,使用不同的旋转定义关键帧。以其中的两个为例:

代码语言:javascript
复制
@keyframes loading-2{
  0%{
    -webkit-transform: rotate(0deg);
    transform: rotate(0deg);
  }
  100%{
    -webkit-transform: rotate(144deg);
    transform: rotate(144deg);
  }
}
@keyframes loading-3{
  0%{
    -webkit-transform: rotate(0deg);
    transform: rotate(0deg);
  }
  100%{
    -webkit-transform: rotate(90deg);
    transform: rotate(90deg);
  }
}

在这里,loading-2从0度转换为144度。

下面的loading-3从0度变换为90度。

每个进度条的关键帧不应该是相同的吗?只有背景颜色应该改变。但是您为不同的颜色定义了不同的关键帧,如果不是其中的一部分,这可能是原因。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69940290

复制
相关文章

相似问题

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