javascript - 在javascript中显示百分比弧

标签 javascript html css svg

<分区>

如何在 JavaScript 中以圆或弧的形式显示百分比。 我想以百分比显示黑色圆周。假设如果我输入最大值 20 和最小值 10,它应该显示 50% 的圆(弧) 怎么做?

<!DOCTYPE html>
<html>
    <body>

    //displays circle with dimensions 
    <svg height="300" width="300">
        <circle cx="150" cy="100" r="90" stroke="brown" stroke-width="10" fill="white"/>
    </svg>
    <br/><br/>

    maxValue: <input type="text" value="" id="value1" /><br/>
    minValue: <input type="text" value="" id="value2" /><br/>
    <input type="button" value="Stroke-percentage" onclick="" />
    stroke-percentage = maxValue/minValue * 100
    </body>
</html>

最佳答案

Santho 的答案对于 SVG 是正确的,但我想提及 HTML5 的 Canvas 元素作为替代:

/**
 * arcPercentage
 *
 * @param {{ radius?: number, rate?: number, color?: string }} parameters
 * @returns
 */
function arcPercentage(parameters) {
  var radius = (parameters.radius !== void 0 ? parameters.radius : 100);
  var rate = (parameters.rate !== void 0 ? parameters.rate : 1);
  var color = (parameters.color !== void 0 ? parameters.color : "rgba(255,0,0,1)");
  var c = document.createElement("canvas");
  var size = c.width = c.height = radius * 2;
  var ctx = c.getContext("2d");
  if (rate == 0) {
    return c;
  }
  ctx.fillStyle = color;
  ctx.beginPath();
  //Start in origo
  ctx.arc(radius, radius, 0, 0, 0);
  //Move to start position
  ctx.arc(radius, radius, radius, 0, 0);
  //Arc to percentage
  ctx.arc(radius, radius, radius, 0, (Math.PI * 2) * rate);
  //move to origo
  ctx.arc(radius, radius, 0, (Math.PI * 2) * rate, (Math.PI * 2) * rate);
  ctx.fill();
  ctx.closePath();
  return c;
}

//TEST
//Get nodes
var inputNode = document.getElementById("circle-input");
var imageNode = document.getElementById("circle-image");
//Bind event
inputNode.onchange = inputNode.onkeyup = inputNode.onmouseup = function() {
  //Only fire if valid input
  if (inputNode.validity.valid) {
    //Parse value
    var value = parseInt(inputNode.value, 10) / 100;
    //Draw the arc
    imageNode.src = arcPercentage({
      color: "blue",
      radius: 100,
      rate: value
    }).toDataURL();
  }
};
<input id="circle-input" min="0" max="100" type="number" value="0">
<br/>
<img id="circle-image">

关于javascript - 在javascript中显示百分比弧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46316995/

相关文章:

html - 固定垂直菜单栏

css - Bootstrap 导航折叠链接占用屏幕宽度

javascript - 如何在 DateTimePicker JavaScript 中查找今天的日期?

javascript - 构建一个脚本以从 HTML 表单中获取数据并将其放置在

html - 没有 JavaScript 的弹出窗口?

javascript - jQuery 不是同时动画 div

javascript - 点击动画div

javascript - 您如何处理带有请求 promise 的 cookie?

javascript - 如何使用 jQuery 使对象在视口(viewport)中水平居中?

html - 我正在尝试添加第 6 个动画,但我不知道为什么它不显示