javascript – 使用jquery和canvas从html元素id到另一个html元素绘制线条
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript – 使用jquery和canvas从html元素id到另一个html元素绘制线条,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1794字,纯文字阅读大概需要3分钟。
内容图文
是否可以通过引用元素id来绘制带有html和jquery的行?我在文本中有一个重要的单词,并希望在此单词和描述它的图像之间画一条线.我已经看到可以在带有画布的元素之间绘制,但它们的样式位置设置为绝对.由于我的元素是文本中的单词,因此我无法将其设置为绝对.
例
<p>This is my text with this very <span id="important_word">important</span> word</p>
...
<img src="important.jpg" id="important_img"/>
现在我想在span和img之间画一条线.可能吗?
提前致谢!
解决方法:
我做了一个非常粗略的例子,说明我是怎么做的.它应该让你在正确的轨道上:
我将class line用于hoverable元素,并使用data-id属性作为相应的元素.
HTML:
<p>This is my <span class="line" data-id="important_img">text</span> with this very <span class="line" data-id="important_img2">important</span> word</p>...
<img src="important.jpg" id="important_img" />
<br>
<br>o asf isj biojso jo f ad f
<img src="important.jpg" id="important_img2" />
jQuery的:
$('.line').hover(function () {
var $t = $(this);
var $i = $('#' + $t.data('id'));
// find offset positions for the word (t = this) and image (i)
var ot = {
x: $t.offset().left + $t.width() / 2,
y: $t.offset().top + $t.height() / 2
};
var oi = {
x: $i.offset().left + $i.width() / 2,
y: $i.offset().top + $i.height() / 2
};
// x,y = top left corner
// x1,y1 = bottom right corner
var p = {
x: ot.x < oi.x ? ot.x : oi.x,
x1: ot.x > oi.x ? ot.x : oi.x,
y: ot.y < oi.y ? ot.y : oi.y,
y1: ot.y > oi.y ? ot.y : oi.y
};
// create canvas between those points
var c = $('<canvas/>').attr({
'width': p.x1 - p.x,
'height': p.y1 - p.y
}).css({
'position': 'absolute',
'left': p.x,
'top': p.y,
'z-index': 1
}).appendTo($('body'))[0].getContext('2d');
// draw line
c.strokeStyle = '#f00';
c.lineWidth = 2;
c.beginPath();
c.moveTo(ot.x - p.x, ot.y - p.y);
c.lineTo(oi.x - p.x, oi.y - p.y);
c.stroke();
}, function () {
$('canvas').remove();
});
演示:
内容总结
以上是互联网集市为您收集整理的javascript – 使用jquery和canvas从html元素id到另一个html元素绘制线条全部内容,希望文章能够帮你解决javascript – 使用jquery和canvas从html元素id到另一个html元素绘制线条所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。