SVG 圆圈、文本或线条上的可点击 link
Clickable link on a SVG circle, text or line
使用 snapsvg.io,我想知道是否可以向 SVG 文本、圆圈或线条添加可点击的 link,例如 <a href="somelink.com"/>My Link</a>
标签。
我这里的一个例子是文本:
var s = Snap("#svg");
var text = s.text(x + 10, y - 5, 'My Text');
text.attr({
fill: doesExist ? alert : textColorOK,
fontSize: '10px',
'font-weight': '600',
'font-family': 'Arial Narrow, sans-serif',
'text-anchor': 'start',
cursor: doesExist ? 'pointer' : 'default'
});
我想用 snapsvg.io 来做这件事。此外,我想以 JavaScript,而不是 jQuery.
的形式进行
有一个SVG <a>
element。
我不了解 Snap,根据我的快速测试,我无法直接从库中设置 xlink:href
,但这里有一个解决方法:
var s = Snap("#mySVG1");
var a = s.el('a');
a.node.setAttributeNS('http://www.w3.org/1999/xlink', 'href', 'http://whosebug.com');
a.add(s.text(0, 100, "I'm a link"))
<script src="http://cdn.jsdelivr.net/snap.svg/0.1.0/snap.svg-min.js"></script>
<svg id="mySVG1" height="200" width="200" viewBox="0 0 200 200">
</svg>
Kaiido 的答案是正确的(所以我正在使用那个,所以不要接受这个作为答案),但如果有帮助,只是为了扩展那个答案,你可以添加一个插件来做到这一点,以备不时之需经常这样做,所以它看起来像这样...
Snap.plugin( function( Snap, Element, Paper, global ) {
Element.prototype.a = function( link, element ) {
var a = this.el('a');
// prev was var a = s.el('a'); // but thats limited to just one paper.
a.node.setAttributeNS('http://www.w3.org/1999/xlink', 'href', link);
return a.add( element )
};
});
var c = s.circle(20,20,20);
var t = s.text(0,100,'Hi there, click me')
s.a( 'http://www.whosebug.com', c).attr({ stroke: 'red', fill: 'red'})
s.a( 'http://www.whosebug.com', t).attr({ stroke: 'red', fill: 'red'})
感谢回复,但最终使用了点击事件,比如文本元素,即
text.click(function () {
window.location.href = "http://whosebug.com/";
});
使用 snapsvg.io,我想知道是否可以向 SVG 文本、圆圈或线条添加可点击的 link,例如 <a href="somelink.com"/>My Link</a>
标签。
我这里的一个例子是文本:
var s = Snap("#svg");
var text = s.text(x + 10, y - 5, 'My Text');
text.attr({
fill: doesExist ? alert : textColorOK,
fontSize: '10px',
'font-weight': '600',
'font-family': 'Arial Narrow, sans-serif',
'text-anchor': 'start',
cursor: doesExist ? 'pointer' : 'default'
});
我想用 snapsvg.io 来做这件事。此外,我想以 JavaScript,而不是 jQuery.
的形式进行有一个SVG <a>
element。
我不了解 Snap,根据我的快速测试,我无法直接从库中设置 xlink:href
,但这里有一个解决方法:
var s = Snap("#mySVG1");
var a = s.el('a');
a.node.setAttributeNS('http://www.w3.org/1999/xlink', 'href', 'http://whosebug.com');
a.add(s.text(0, 100, "I'm a link"))
<script src="http://cdn.jsdelivr.net/snap.svg/0.1.0/snap.svg-min.js"></script>
<svg id="mySVG1" height="200" width="200" viewBox="0 0 200 200">
</svg>
Kaiido 的答案是正确的(所以我正在使用那个,所以不要接受这个作为答案),但如果有帮助,只是为了扩展那个答案,你可以添加一个插件来做到这一点,以备不时之需经常这样做,所以它看起来像这样...
Snap.plugin( function( Snap, Element, Paper, global ) {
Element.prototype.a = function( link, element ) {
var a = this.el('a');
// prev was var a = s.el('a'); // but thats limited to just one paper.
a.node.setAttributeNS('http://www.w3.org/1999/xlink', 'href', link);
return a.add( element )
};
});
var c = s.circle(20,20,20);
var t = s.text(0,100,'Hi there, click me')
s.a( 'http://www.whosebug.com', c).attr({ stroke: 'red', fill: 'red'})
s.a( 'http://www.whosebug.com', t).attr({ stroke: 'red', fill: 'red'})
感谢回复,但最终使用了点击事件,比如文本元素,即
text.click(function () {
window.location.href = "http://whosebug.com/";
});