javascript 当鼠标悬停在网页上的文本上时突出显示Map图像的部分

rseugnpd  于 2023-04-19  发布在  Java
关注(0)|答案(4)|浏览(142)

场景:

  • Map了多个区域的图像。
  • 页面上的文本列表

所需功能:当我将鼠标悬停在列表中的不同文本上时,Map图像中的相应区域将高亮显示。
有没有人知道一个好的javascript工具可以做到这一点?
我发现了一个jquery插件(map hilight),当你将鼠标移到图像本身时,它会高亮显示图像的一部分。我正在寻找下一步-从图像外部的源触发高亮显示。

lztngnrs

lztngnrs1#

我看了你提到的插件的源代码,扩展它应该相当容易,这样它就可以做你想做的事情,这里有一些提示:
jquery.maphighlight.js的第127-136行:

mouseover = function(e) {
   var shape = shape_from_area(this);
   add_shape_to(canvas, shape[0], shape[1], $.metadata ? $.extend({}, options, $(this).metadata()) : options);
};

if(options.alwaysOn) {
   $(map).find('area[coords]').each(mouseover);
} else {
   $(map).find('area[coords]').mouseover(mouseover).mouseout(function(e) { clear_canvas(canvas); });
}

这是所有事件魔术发生的地方。鼠标悬停功能用于突出显示某个区域。
在你的代码中,你可以尝试找到你想要突出显示的区域坐标,方法如下:

$(map).find('#id_of_the_area[coords]').each(moseover);

其中,id_of_the_area是您为要突出显示的<area>标记指定的ID。
如果你把它放到一个函数中,你可以从任何你需要的地方调用它。

编辑:

根据你在评论中的问题,这里有一些更多的提示:
突出显示/取消突出显示区域的函数可能如下所示:

function highlight(e) {
   $(map).find('#id_of_the_area[coords]').each(moseover);
} 
function unHighlight(e) {
   clear_canvas($(canvas));
}

在这个例子中,id_of_mapid_of_canvas是map和canvas元素的id。
mouseoverclear_canvas函数和mapcanvas变量的作用域可能是一个问题。您需要小心放置这些代码的位置。我建议在尝试添加此功能之前阅读一下jquery插件。
在jquery中,你可以将事件附加到任何html元素上。像这样:

$('#id_of_element').mouseover(highlight); 
$('#id_of_element').mouseout(unHighlight);

id_of_element将是您希望触发突出显示的元素的id。
希望这有帮助!

dtcbnfnu

dtcbnfnu2#

虽然这不是非常优雅,但您可以手动触发所讨论的area元素的mouseover事件:

<a href="..." onmouseover="$('#certain-area')
       .trigger('mouseover');">link text</a>

当然,这比使用onmousoveronmouseout更好。

tuwxkamq

tuwxkamq4#

public void run(){

var data = $('#test').mouseout().data('maphilight') || {};
        data.alwaysOn = !data.alwaysOn;
        $('#test').data('maphilight', data).trigger('alwaysOn.maphilight');
        $(".p-hover-new").css({
  "opacity": "1"
})

相关问题