【发布时间】:2016-12-09 01:33:42
【问题描述】:
我正在模拟svg 的手写动画,当用户按住鼠标时会激活该动画。根据source,为了创建这种效果,我将徽标与徽标本身的stroke 线重叠,并将颜色转换为transparent 以显示它。
徽标应在mousedown 上显示并通过以下脚本在mouseup 上再次隐藏:
var logoElements = document.querySelectorAll('#first svg *');
var down = false;
function checkMousePosition() {
for (i = 0; i < logoElements.length; i++) {
if (down == true) {
console.log(logoElements[i].getTotalLength());
logoElements[i].classList.add("animation-forward");
logoElements[i].classList.remove("animation-backward");
} else {
logoElements[i].classList.remove("animation-forward");
logoElements[i].classList.add("animation-backward");
}
}
}
这是带有完整代码的fiddle。它似乎有效,但目前我遇到以下问题:
-
console.log(logoElements[i].getTotalLength());抛出一个错误,指出它不是一个函数。 - 徽标应该在开始时隐藏并在点击时显示出来,反之亦然,并且响应速度很慢。
你知道我做错了什么吗?
提前感谢您的回复!
【问题讨论】:
-
呃,
getTotalLength函数到底在哪里?此外,您正在获取数组中项目的长度?应该是logoElements.length而不是logoElements[i].length -
它包含在 svg 路径元素中:developer.mozilla.org/en-US/docs/Web/API/SVGPathElement
-
包括在内,但您还没有检查它的支持范围。该徽标在页面加载时为我隐藏,并在点击时显示。
标签: javascript css svg css-animations