javascript - 在列表之间绘制箭头

标签 javascript jquery html drawing

有没有办法在两个突出显示的列表项之间动态绘制箭头?

因此,如果我将鼠标悬停在“项目 2”上,它会执行此操作(但是是一个直箭头):

Item 1            Highlight 3
Item 2-----\      Highlight 1
Item 3      ----->Highlight 2

这是我几分钟前在这里得到的答案中的代码:

Highlight item in two lists when mouseover

$(".list1 li, .list2 li").hover(function () {
    var n = this.id.substr(2);
    $("#qq" + n + ", #aa" + n).toggleClass("highlight");
});

jsfiddle:http://jsfiddle.net/e37Yg/1/

<ul class="list1">
    <li id="qq1">sdfsdv</li>
    <li id="qq2">bnvnvb</li>
    <li id="qq3">nmnutymnj7</li>
    <li id="qq4">cvbc</li>
    <li id="qq5">45tsgd</li>
</ul>

<ul class="list2">
    <li id="aa3">fgtbrtgb</li>
    <li id="aa1">vbn xgbn</li>
    <li id="aa5">vdgver</li>
    <li id="aa4">asdasdv</li>
    <li id="aa2">nvfbnfn</li>
</ul>

最佳答案

您不必在此处使用二维绘图。检查一下:http://jsfiddle.net/vjYuW/ 我刚刚 fork 并更新了您在上面发布的 fiddle 。

这是基本代码,它处理 3 个 1 像素宽或高的 DIV 来绘制线条:

HTML:


...left list...
<div id="segment1" class="hline"></div>
<div id="segment2" class="vline"></div>
<div id="segment3" class="hline"></div>
...right list...

CSS:


... formatting for ULs here, both have to be float:left...

.highlight { background-color: red; }

.hline {    
    display:block;
    position:relative;
    float:left;
    height: 1px;
    width: 7em;  
}

.vline {
    display:block;
    position:relative;
    float:left;
    height: 1px;
    width: 1px;    
}

JavaScript:


$(".list1 li, .list2 li").hover(function () {
    var n = this.id.substr(2);
    var leftY = $('#qq' + n).position().top;
    var rightY = $('#aa' + n).position().top;
    var H = Math.abs(rightY-leftY);
    if (H == 0) H = 1;
    $('#segment1').css('top',leftY+'px');
    $('#segment3').css('top',rightY+'px');
    $('#segment2').css('top',Math.min(leftY,rightY)+'px');
    $('#segment2').css('height',H+'px');
    $("#qq" + n + ", #aa" + n + ",#segment1,#segment2,#segment3").toggleClass("highlight");
});

注意:您可能需要稍微调整一下以支持所有浏览器 - 我没有检查 IE6 & Co.

关于javascript - 在列表之间绘制箭头,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4664841/

相关文章:

javascript - 在angulajs中转换java对象中的json时,获取嵌套异常是com.fasterxml.jackson.databind.JsonMappingException

javascript - 在 CRM 2011 中使用 Javascript 从动态选项集(选项列表)获取值时出现问题

javascript - 页面重新加载后恢复所选/突出显示的文本

javascript - 如何动态增加JS中的div id

javascript - 如何在 vue.js 中使用属性选择器?

javascript - 抓取 php 中的 &lt;textarea&gt; 值(HTML 形式)

jquery - 当下拉列表选定值更改时隐藏 div

javascript - jQuery Submit() - 表单仍被发送

javascript - 从字符串中剪切 () 之间的所有符号

python - 在 Django 中的 HTML 模板上呈现/引发验证错误