jquery - 如何更改 svg 饼图切片从顶部开始并使用 jquery 动态制作顺时针动画

标签 jquery css animation svg

我想制作一个带动画的饼图,这是我的代码。

我的问题是:

  1. 如何使图表从顶部(12 点钟位置)开始而不旋转 <svg>
  2. 我将使用 JQuery 创建饼图切片。如何设置 CSS @keyframes stroke-dasharray动态地使用 JQuery?

谢谢!

@keyframes animate_p1 {
  to { stroke-dasharray: 78.5 314; } /* 314 ÷ 4 = 78.5 */
}
#bg {
  fill: #ddd;
}
#p1 {
  stroke-dasharray: 0 314; /* 2π × 50 ≈ 314 */
  stroke-dashoffset: 0;
  animation: animate_p1 1s linear forwards;
}
<svg width="200" height="200">
  <circle id="bg" r="100" cx="100" cy="100" />
  <circle id="p1" r="50" cx="100" cy="100" stroke="yellowgreen" stroke-width="100" fill="none" />
</svg>

最佳答案

一个简单的解决方案是旋转 SVG 元素。另一种解决方案是使用路径而不是第二个圆圈。

如果您查看路径,您会发现它从 M100,50 开始,这是您需要开始的顶部。接下来是锥形 2 条弧线,按照您需要动画发生的顺序淹没:第一个是右边的:A50,50 0 0 1 100,150 接下来是左边的:A50,50 0 0 1 100 ,50

希望对你有帮助。

@keyframes animate_p1 {
  to { stroke-dasharray: 78.5 314; } /* 314 ÷ 4 = 78.5 */
}
#bg {
  fill: #ddd;
}
#p1 {
  stroke-dasharray: 0 314; /* 2π × 50 ≈ 314 */
  stroke-dashoffset: 0;
  animation: animate_p1 1s linear forwards;
}

svg{border:1px solid}
<svg width="200" height="200">
  <circle id="bg" r="100" cx="100" cy="100" />
  
  
  
  <path d="M100,50A50,50 0 0 1 100,150A50,50 0 0 1 100,50" id="p1" r="50" cx="100" cy="100" stroke="yellowgreen" stroke-width="100" fill="none" />
</svg>

关于jquery - 如何更改 svg 饼图切片从顶部开始并使用 jquery 动态制作顺时针动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55410771/

相关文章:

javascript - 将当前日期作为占位符最初放置在输入字段 datepicker bootstrap 中

javascript - jQuery 对话框不工作 Chrome 扩展

javascript - React 组件从一个移动到另一个的动画

OpenGL动画

android - 如何使用 ObjectAnimator 去除动画的慢速结束?

php - JQuery .post 不起作用,似乎没有加载帖子页面

javascript - jquery/css not 选择器不起作用

HTML 文件的 jQuery .load() 在 Chrome 中不一致

javascript - EPUB3 Reflowable-Fixed Layout 动态调整文本到 Div 的大小

css - 允许最终用户拥有他们可以修改的特定 CSS 规则