使用Fancybox和图像映射

我想知道是否有办法将fancybox与Image贴图一起使用?

      

那么你想在带有图像映射的fancybox中显示单个图像?

可以通过几种方式将地图添加到fancybox的图像中,

例如,您可以在加载后将其添加到图像中,图像将使用id fancybox-img加载,因此使用oncomplete()回调我们可以有权将地图添加到图像:

HTML:

         

jQuery的:

 $("a.fancybox").fancybox({ 'titleShow': true, 'titlePosition': 'inside', onComplete: function() { $('#fancybox-img').attr('usemap', '#Map'); } }); 

看到它在这里工作


另一种方法是将内容传递给fancybox:

HTML:

       

jQuery的:

 $("img").click(function() { var url = $(this).attr('src'); var content = ''; $.fancybox({ 'title' : 'Single image with a map', 'titlePosition': 'inside', 'content' : content }); }); 

看到它在这里工作


通过这样做,可以改进以上内容以支持多个图像和地图:

HTML:

  


Try clicking image to enlarge....

jQuery

 $("img.fancybox").click(function() { var url = $(this).attr('src'); var map = $(this).attr('rel'); var title = $(this).attr('title'); var content = ''; $.fancybox({ 'title': title, 'titlePosition': 'inside', 'content': content }); }); 

看到它在这里工作

注意:我已经为fancybox添加了几个选项,比如标题只是为了展示如何添加选项。 我也抓住了地图上的点击,因此它没有打开url,只是为了告诉您地图正在运行。


根据评论更新:

啊,我误解了。 在这种情况下,当用户点击地图项时,使用fancybox非常简单。 最简单的方法是使用jQuery选择器$('map > area')来捕获$('map > area')任何点击。 但是,如果你不希望所有区域在fancybox中打开,最好添加到你的选择器,例如给你想要打开fancybox的每个区域一个类,然后使用选择器$('map > area.fancybox')

HTML:

  
Try clicking image map.....

jQuery的:

 $('map > area.fancybox').click(function(e) { e.preventDefault(); var url = $(this).attr('href'); var title = $(this).attr('title'); var type = $(this).attr('rel'); $.fancybox({ 'title': title, 'titlePosition': 'inside', 'href' : url, 'type' : type }); }); 

请参阅此处的示例

  • 因此,在上面的示例中,我们使用jQuery .click()来捕获具有类fancybox的地图区域上的任何点击(您会注意到www.ask.com示例将在窗口中打开,其他两个在fancybox中打开)
  • 我们使用.preventDefault()方法像往常一样在链接后停止浏览器。
  • 接下来点击该区域的url。
  • 然后获取点击区域的标题(不是真的需要,但只是添加以尝试并帮助显示如何获取数据)
  • 接下来,我使用rel属性设置类型,这允许您设置fancybox要执行的操作。
  • 现在只需打开带有详细信息的fancybox即可。

所以在这个例子中:

  • 区域1将打开一个fancybox,它是一个包含页面的iframe。
  • 区域2将打开一个带有图像的fancybox。
  • 区域3将正常加载链接中的网站,而不是使用fancybox。