- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我在使用 stroke-dasharray
和 stroke-dashoffset
使我的 SVG 路径设置动画时遇到了一些问题。路径长度用Js计算。下面我包含了一个 JsFiddle,它准确地显示了我要完成的任务。
我找了又找,遇到的很多例子都不适合我。在这一点上,我得出的结论是我遗漏了一些东西,但我无能为力地试图弄清楚那是什么。
<div>
<svg x="0px" y="0px" width="312px" height="312px" viewBox="0 0 512 512">
<g>
<path class="pathOne" d="M320,128c52.562,0,95.375,42.438,96,94.813c-0.25,1.938-0.438,3.875-0.5,5.875l-0.812,23.5l22.25,7.75 C462.688,268.906,480,293.062,480,320c0,35.312-28.688,64-64,64H96c-35.281,0-64-28.688-64-64c0-34.938,28.188-63.438,63-64 c1.5,0.219,3.063,0.406,4.625,0.5l24.313,1.594l8-22.969C140.938,209.313,165.063,192,192,192c3.125,0,6.563,0.375,11.188,1.188 l22.406,4.031l11.156-19.844C253.875,146.938,285.75,128,320,128 M320,96c-47.938,0-89.219,26.688-111.156,65.688 C203.375,160.719,197.781,160,192,160c-41.938,0-77.219,27.063-90.281,64.563C99.813,224.438,97.969,224,96,224c-53,0-96,43-96,96 s43,96,96,96h320c53,0,96-43,96-96c0-41.938-27.062-77.25-64.562-90.313C447.5,227.75,448,225.938,448,224 C448,153.313,390.688,96,320,96L320,96z" fill="#333333"/>
</g>
</svg>
</div>
svg {
position: fixed;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
}
path.pathOne {
stroke-dasharray: 2566;
stroke-dataoffset: 2566;
animation: cloud 5s linear alternate infinite;
}
@keyframes cloud {
from {
stroke-dashoffset: 2566;
}
to {
stroke-dashoffset: 0;
}
}
最佳答案
您的图形不显示路径的笔划,而是没有笔划的填充路径。这是您的路径数据的说明,您可以在 svg 编辑器 Inkscape 中看到它们:
这是您可以设置动画的路径。那是你想要的吗?在这种情况下,定义笔画并移除填充:
path.pathOne {
fill: none;
stroke: black;
stroke-width: 3;
stroke-dasharray: 2566;
stroke-dataoffset: 2566;
animation: cloud 5s linear alternate infinite;
}
@keyframes cloud {
from {
stroke-dashoffset: 2566;
}
to {
stroke-dashoffset: 0;
}
}
<svg x="0px" y="0px" width="250px" height="250px" viewBox="0 0 512 512">
<g>
<path class="pathOne" d="M320,128c52.562,0,95.375,42.438,96,94.813c-0.25,1.938-0.438,3.875-0.5,5.875l-0.812,23.5l22.25,7.75 C462.688,268.906,480,293.062,480,320c0,35.312-28.688,64-64,64H96c-35.281,0-64-28.688-64-64c0-34.938,28.188-63.438,63-64 c1.5,0.219,3.063,0.406,4.625,0.5l24.313,1.594l8-22.969C140.938,209.313,165.063,192,192,192c3.125,0,6.563,0.375,11.188,1.188 l22.406,4.031l11.156-19.844C253.875,146.938,285.75,128,320,128 M320,96c-47.938,0-89.219,26.688-111.156,65.688 C203.375,160.719,197.781,160,192,160c-41.938,0-77.219,27.063-90.281,64.563C99.813,224.438,97.969,224,96,224c-53,0-96,43-96,96 s43,96,96,96h320c53,0,96-43,96-96c0-41.938-27.062-77.25-64.562-90.313C447.5,227.75,448,225.938,448,224 C448,153.313,390.688,96,320,96L320,96z" fill="#333333"/>
</g>
</svg>
请注意,两个子路径都是单独的虚线,因此给人的印象是有两个动画。但这并不是正在发生的事情,只是破折号和偏移量分别应用于每个子路径。
由于路径长度是为两个子路径的总和计算的,因此您会在动画重复之前看到时间滞后。
但也许您的目标是 this ?
关于javascript - SVG stroke-dashoffset 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47112116/
我有一个 SVG 路径,我正在尝试使用 stroke-dasharray/stroke-dashoffset 组合技巧对其进行动画处理以“绘制”自身(参见 this article更多信息)。但是,尽
我正在用 SVG 制作一个简单的动画 stroke-dashoffset以及一系列路径。 问题是:在没有动画的情况下,内联 SVG 有两个具有非常锐 Angular 的三 Angular 形,并且它们
我有 3 个 svg donut chart 表,每个图表都有一条用 stroke-dasharray 创建的线,所有图表加起来为 100%。 我希望每个图表都从最后一个图表结束的地方开始,所以第一个
我有 3 个 svg donut chart 表,每个图表都有一条用 stroke-dasharray 创建的线,所有图表加起来为 100%。 我希望每个图表都从最后一个图表结束的地方开始,所以第一个
我是 SVG 和动画的新手。刚刚创建了一条路径并想用动画绘制它,我正在使用“stroke-dashoffset”但它不起作用。这是我的 HTML:
https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/stroke-dashoffset 根据上面的链接,stroke-dashoffs
因此,我通过增加 stroke-dashoffset 值来为这个 SVG Logo 设置动画 svg { position: absolute; top: 50%; left: 50%; tr
我在使用 stroke-dasharray 和 stroke-dashoffset 使我的 SVG 路径设置动画时遇到了一些问题。路径长度用Js计算。下面我包含了一个 JsFiddle,它准确地显示了
我试图画一个 svg 圆。因为我需要使用 stroke-dashoffest 对其进行动画处理,所以圆圈的笔划仅沿逆时针方向填充。有什么办法可以按顺时针方向移动动画。 My Code:
制作动画 stroke-dashoffset我知道使用 CSS @keyframes移动 stroke-dashoffset SVG 路径。但是,因为我想用 background-size: cove
我正在尝试在 D3 中制作路径线动画。我可以让其他过渡起作用,例如淡入淡出效果,但在研究如何过渡路径之后,似乎最好的选择是通过修改它来使用笔画 dasharray var data = { "ty
它在 Google Chrome 中运行良好,但在 Mozilla Firefox 中我的 svg 路径突然出现! 怎么了? 正文: 风格: .ADM-SVG { fill:
我正在尝试在圆形 svg 上进行悬停过渡(不是完整的 360 度,大约 80%)。 根据我的理解,下面的代码应该可以,但是出于某种原因,它不只是指向零,而是添加了额外的迷你拱门。如何避免这种情况? .
即使我添加 -webkit- 前缀,Stroke-dashoffset 也无法在 safari 上运行。请帮我。谢谢!.... 这是我的示例代码.... #path1 { stroke-dasha
我正在尝试从 Javascript 绑定(bind) stroke-dashoffset。我想用变量 this.waittime 替换 20s。怎么做? this.waitime = 20; val
即使我添加 -webkit- 前缀,Stroke-dashoffset 也无法在 safari 上运行。请帮我。谢谢!.... 这是我的示例代码.... #path1 { stroke-dasha
我正在使用 Material Spinner 来显示进度状态。我希望未填充区域为灰色。 最佳答案 先画一个完整的灰色圆圈,不用stroke-dasharray。然后画出你不完整的圆圈(
我正在尝试对 SVG 进行动画处理,使其看起来像是使用 this answer 中描述的技术使用 clippath 和 dashoffset 绘制在屏幕上。期望的结果将是类似于 this codepe
即使我添加 -webkit- 前缀,Stroke-dashoffset 也无法在 safari 上运行。请帮我。谢谢!.... 这是我的示例代码.... #path1 { stroke-dasha
我正在尝试使用半径(rx,ry)在 svg 中创建一个矩形,在顶部和底部带有边框/笔触,并带有圆角。 通过使用 css 属性“dasharray: width, height”,可以仅使用边框/笔触设
我是一名优秀的程序员,十分优秀!