Snap.svg 无法为 <use> 标记元素进行 .transform()
Snap.svg failing to .transform() for <use> tag element
我的 svg 中有一个 use 元素,例如
<use x="47.46" y="44.64" cx="48" cy="45" id="9zh7" href="#msi_plane" class="markerpoint"></use>
我有一个悬停功能,可以在悬停时转换 .markerpoint class 元素:-
$('.markerpoint').hover(
function() {
var mySnapElement = Snap(this);
mySnapElement.transform('s1.5');
}
function() {
mySnapElement.transform('s1');
}
)
转换 对于 svg 的其他元素 工作正常,例如 或 但是
抛出错误
错误响应数据:-
snap.svg.js:2786 Uncaught TypeError: Cannot read properties of null (reading 'substring')
at Element.elproto.getBBox (snap.svg.js:2786)
at extractTransform (snap.svg.js:2834)
at Element.elproto.transform (snap.svg.js:2896)
at SVGUseElement.<anonymous> (main.js:1023)
at SVGUseElement.handle (jquery.min.js:2)
at SVGUseElement.dispatch (jquery.min.js:2)
at SVGUseElement.v.handle (jquery.min.js:2)
似乎是 Snap.svg 在处理
时的限制
寻找前进方向的技巧或建议
快速浏览 the source code 似乎发现 Snap.svg 不支持裸 href,但需要您使用 xlink:href
href 的使用是 SVG 2 中的新功能,SVG 1.1 仅 xlink:href。
我的 svg 中有一个 use 元素,例如
<use x="47.46" y="44.64" cx="48" cy="45" id="9zh7" href="#msi_plane" class="markerpoint"></use>
我有一个悬停功能,可以在悬停时转换 .markerpoint class 元素:-
$('.markerpoint').hover(
function() {
var mySnapElement = Snap(this);
mySnapElement.transform('s1.5');
}
function() {
mySnapElement.transform('s1');
}
)
转换 对于 svg 的其他元素 工作正常,例如
错误响应数据:-
snap.svg.js:2786 Uncaught TypeError: Cannot read properties of null (reading 'substring')
at Element.elproto.getBBox (snap.svg.js:2786)
at extractTransform (snap.svg.js:2834)
at Element.elproto.transform (snap.svg.js:2896)
at SVGUseElement.<anonymous> (main.js:1023)
at SVGUseElement.handle (jquery.min.js:2)
at SVGUseElement.dispatch (jquery.min.js:2)
at SVGUseElement.v.handle (jquery.min.js:2)
似乎是 Snap.svg 在处理
时的限制寻找前进方向的技巧或建议
快速浏览 the source code 似乎发现 Snap.svg 不支持裸 href,但需要您使用 xlink:href
href 的使用是 SVG 2 中的新功能,SVG 1.1 仅 xlink:href。