当前位置: 首页 > 面试题库 >

循环百分比进度栏

和弘博
2023-03-14
问题内容

我希望在我的网站上有一个百分比圆圈指示器

在这种情况下,显示为75%。应该怎么做?我在图像文件中有一个黄色圆圈,但是如果更容易使用CSS来完成所有操作,那么我可以。


问题答案:

考虑到进度条的形状(结束/开始是四舍五入的),我建议使用SVG。

演示:径向进度栏

径向进度栏

在以下示例中,使用stroke-dasarray属性为进度设置动画效果,并使用jQuery将%数字递增:

var count = $(('#count'));

$({ Counter: 0 }).animate({ Counter: count.text() }, {

  duration: 5000,

  easing: 'linear',

  step: function () {

    count.text(Math.ceil(this.Counter)+ "%");

  }

});


body{text-align:center;font-family: 'Open Sans', sans-serif;}

svg{width:30%;}


<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<svg id="animated" viewbox="0 0 100 100">

  <circle cx="50" cy="50" r="45" fill="#FDB900"/>

  <path fill="none" stroke-linecap="round" stroke-width="5" stroke="#fff"

        stroke-dasharray="251.2,0"

        d="M50 10

           a 40 40 0 0 1 0 80

           a 40 40 0 0 1 0 -80">

    <animate attributeName="stroke-dasharray" from="0,251.2" to="251.2,0" dur="5s"/>

  </path>

  <text id="count" x="50" y="50" text-anchor="middle" dy="7" font-size="20">100%</text>

</svg>

不幸的是,IE不支持SVG SMIL动画。要在IE支持下达到相同的结果,可以使用snap.svg之类的库,并stroke-dasharray使用JS 设置属性的动画:

var count = $(('#count'));

$({ Counter: 0 }).animate({ Counter: count.text() }, {

  duration: 5000,

  easing: 'linear',

  step: function () {

    count.text(Math.ceil(this.Counter)+ "%");

  }

});



var s = Snap('#animated');

var progress = s.select('#progress');



progress.attr({strokeDasharray: '0, 251.2'});

Snap.animate(0,251.2, function( value ) {

    progress.attr({ 'stroke-dasharray':value+',251.2'});

}, 5000);
body{text-align:center;font-family:sans-serif;}
svg{width:30%;}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<script src="https://cdnjs.cloudflare.com/ajax/libs/snap.svg/0.3.0/snap.svg-min.js"></script>

<svg id="svg" viewbox="0 0 100 100">

  <circle cx="50" cy="50" r="45" fill="#FDB900"/>

  <path fill="none" stroke-linecap="round" stroke-width="5" stroke="#fff"

        stroke-dasharray="1,250.2"

        d="M50 10

           a 40 40 0 0 1 0 80

           a 40 40 0 0 1 0 -80"/>

  <text x="50" y="50" text-anchor="middle" dy="7" font-size="20">1%</text>

</svg>

<svg viewbox="0 0 100 100">

  <circle cx="50" cy="50" r="45" fill="#FDB900"/>

  <path fill="none" stroke-linecap="round" stroke-width="5" stroke="#fff"

        stroke-dasharray="125.6,125.6"

        d="M50 10

           a 40 40 0 0 1 0 80

           a 40 40 0 0 1 0 -80"/>

  <text x="50" y="50" text-anchor="middle" dy="7" font-size="20">50%</text>

</svg>



<svg id="animated" viewbox="0 0 100 100">

  <circle cx="50" cy="50" r="45" fill="#FDB900"/>

  <path id="progress" stroke-linecap="round" stroke-width="5" stroke="#fff" fill="none"

        d="M50 10

           a 40 40 0 0 1 0 80

           a 40 40 0 0 1 0 -80">

  </path>

  <text id="count" x="50" y="50" text-anchor="middle" dy="7" font-size="20">100%</text>

</svg>


 类似资料:
  • 问题内容: 如何在显示百分比的进度条中间放置标签?问题是python不支持标签背景的透明性,所以我不知道该如何解决。 问题答案: 使用可以做到这一点。这个想法是修改样式的布局(对垂直进度条做同样的事情),在样式条中添加一个标签: 通常的布局: 带有附加标签: 然后,可以使用来更改标签的文本。 这是代码:

  • 示例:9999次做某事(可能超过) 我想在label1上显示循环的百分比,当我编译时,我不能在几毫秒内做任何事情,我的标签只显示100%。有人知道吗,先生?非常感谢。

  • 问题内容: 我已经在服务器上用PHP和bash编写了一个完整的系统,以便在VPS上转换和流式传输HTML5中的视频。转换由ffmpeg在后台完成,其内容输出到 block.txt 。 除其他外,我找不到有效的例子。 我需要获取当前编码进度的百分比。 我上面链接的第一篇文章给出了: $ percent_extracted变量回显零,由于数学不是我的强项,所以我真的不知道如何在这里继续。 这是来自bl

  • 本文向大家介绍Python实现带百分比的进度条,包括了Python实现带百分比的进度条的使用技巧和注意事项,需要的朋友参考一下 大家在安装程序或下载文件时,通常都能看到进度条,提示你当前任务的进度。其实,在python中实现这个功能很简单,下面是具体代码。在实际应用中,你完全可以根据自己的要求进行修改!比如,示例中是通过time.sleep()方法进行时间延迟,你完全可以根据实际的程序运行耗时进行

  • 我正在尝试制作一个“进度条”与动画,改变了酒吧的背景颜色。 该条在0%时应该以红色开始,当它穿过元素时,在100%时会变为绿色。我的工作是100%(不,颜色不是很好,但这是一个未来的问题)... null null 问题是(例如)在50%时,我无法使条“停止”在红色和绿色之间的50%过渡状态。 有没有一种方法可以计算颜色,因为它将在50%或让CSS停止过渡在一个特定的点? 你可以看到如果我有50%

  • **了解更多信息:总上传时间为15分钟,但进度百分比在一秒钟内完成。