这种图html js怎么画啊

这个磁盘图用html js怎么写呢

img

可以用canvas画图

用两个div嵌套即可。

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        .box1 {
            background-color: #b4eab4;
            height: 200px;
            width: 200px;
            border-radius: 50%;
            display: flex;
            justify-content: center;
            align-items: center;
        }

        .box2 {
            background-color: #fff;
            height: 80px;
            width: 80px;
            border-radius: 50%;
        }
    </style>
    <script src='https://cdn.staticfile.org/jquery/1.10.2/jquery.min.js'></script>
</head>

<body>
    <div class="box1">
        <div class="box2"></div>
    </div>
</body>

<script>

</script>

</html>

img

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        .disk-container {
            position: relative;
            width: 1400px;
            height: 1400px;
        }
    </style>

</head>

<body>
    <canvas id="disk" class="disk-container"></canvas>
    <script>
        var c = document.getElementById("disk");
        /** @type {CanvasRenderingContext2D} */
        var ctx = c.getContext("2d");
        c.width = c.clientWidth
        c.height = c.clientHeight

        var center = c.clientWidth / 2

        for (let i = 0; i < 30; i++) {
            ctx.beginPath()
            ctx.lineWidth = 5
            ctx.strokeStyle = 'rgb(66,155,66)'
            // 重叠细节需要根据圈值改变对应下边儿第二个参数
            ctx.setLineDash([3, 3]);
            ctx.arc(center, center, center - 100 - 8 * i, 0, Math.PI * 2)
            ctx.closePath();
            ctx.stroke()
        }

    </script>
</body>

</html>

img


<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <style>
    * {
      margin: 0;
      padding: 0;
    }

    div {
      border-radius: 50%;
      border: 5px dashed red;

    }

    .father {
      width: 400px;
      height: 400px;
      display: flex;

      /* co1umn 从上到下*/
      align-items: center;
      /* center代表水平方向 */
      justify-content: center;

    }

    .son1 {
      width: 380px;
      height: 380px;
      display: flex;

      /* co1umn 从上到下*/
      align-items: center;
      /* center代表水平方向 */
      justify-content: center;
    }

    .son2 {
      width: 360px;
      height: 360px;
      display: flex;

      /* co1umn 从上到下*/
      align-items: center;
      /* center代表水平方向 */
      justify-content: center;
    }
  </style>
</head>

<body>
  <div class="father">
    <div class="son1">
      <div class="son2"></div>
    </div>
  </div>
</body>

</html>

我这个 只是取巧 。 可以用flex 布局 加上 border 虚线实现 。你只需要 接着 嵌套 每层 宽高 以此递减 20px .给的是思路具体样式可以调