【发布时间】:2018-12-05 20:03:20
【问题描述】:
我正在尝试使用 SVG 制作简单的线条绘制动画。
我正在使用 javascript 来查找路径的长度,然后将 stroke-dashoffset 和 stroke-dasharray 设置为动态形状。
一个简单的演示如下所示
var path = document.querySelector("path");
path.style.strokeDasharray = path.getTotalLength();
path.style.strokeDashoffset = path.getTotalLength();
path.style.strokeLinecap = "round";
setTimeout(function(){
path.style.transition = "stroke-dashoffset 1s"
path.style.strokeDashoffset = 0;
},1000)
<svg width="200" height="200">
<path d="m10,10 h100 v100 h-100 v-100" stroke="black" fill="none" stroke-width="2"/>
</svg>
上面的 sn-p 在 Chrome 中完美运行。但在 Firefox 和 Edge 中,线条动画之前会出现一个点。仅当指定 stroke-linecap=round 时才会出现。否则它会按预期工作。 Fiddle.
火狐:
关于如何删除点的任何想法?
【问题讨论】:
-
将
path.style.strokeLinecap = "square";移动到setTimeout怎么样? jsfiddle.net/dvq58seL/1 -
有人应该提出 Chrome 错误。 “完美运行”并不是对 Chrome 在这里所做的非常准确的描述。
-
等待其他浏览器呈现它应该的样子,而 Chrome 做错了吗? @罗伯特朗森
-
@akshay 这就是我认为的 FWIW。
标签: javascript html css svg