• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:fancyboxにイメージマップを付けたい)

fancyboxでイメージマップを付ける方法

このQ&Aのポイント
  • fancyboxで表示したイメージ画像に複数のイメージマップを付けたいですが、同じリンク先にしか飛ばない問題が発生しています。どうすれば複数の画像に別々のリンク先を設定することができるでしょうか?
  • fancyboxを使用している場合、イメージマップを設定する方法が必要です。現在の設定では、複数の画像に別々のリンク先を設定することができません。解決策を教えてください。
  • fancyboxで表示されるイメージ画像には、複数のイメージマップを設定したいと考えています。しかし、現在の設定では、同じリンク先にしか飛べません。どのようにすれば複数の画像に別々のリンク先を設定できるでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

前の回答にあるソースの<area>にある classを削除してください。それで期待通りの動きになると思います。

gspopo
質問者

お礼

無事に上手く行きました! このたびは本当に助かりました。ありがとうございました!

その他の回答 (1)

回答No.1

クリッカブルマップは、 対象のusemap属性で指定する値と <map>のid属性の値が一致しないと有効になりません。 HTMLにおけるid属性は他と被らない一意なものなので、 MapというIDが複数ある状態だとうまく動きません。 なので<map>タグのIDを被らないようにすべて変更して、 fancyboxを起動する要素(<a>と<area>)に対象になるmapのID情報をつければ、 完了したときに実行されるonCompliteイベントでクリック元に応じたusemap属性が付けられるようになります。 ★IDとname変更、areaのclassにもIDと同じクラスを追加する <map name="map-1" id="map-1"> <area shape="rect" coords="7,8,38,36" href="http://jsrun.it/assets/9/Q/J/1/9QJ1n.jpg" class="fancybox map-1" /> <area shape="rect" coords="41,6,70,35" href="http://jsrun.it/assets/y/z/4/q/yz4qn.jpg" class="fancybox map-1" /> <area shape="rect" coords="75,6,103,35" href="http://jsrun.it/assets/y/2/t/Q/y2tQB.jpg" class="fancybox map-1" /> </map> ★クラス追加 <a href="http://jsrun.it/assets/o/x/g/D/oxgDY.jpg" class="fancybox map-1"> <img src="http://jsrun.it/assets/o/x/g/D/oxgDY.jpg" width="200" /> </a> ★修正したJS $(function() { //fancyboxを起動させる記述 $(".fancybox").fancybox({ padding:0, margin:0, onComplete: function(el) { //クリックされた要素にmap-\dにマッチするclassがあるか判別 var hasMap = $(el).attr('class').match(/map\-\d/i); if(hasMap){ $('#fancybox-img').attr('usemap', '#' + hasMap[0]); } } }); }); https://gist.github.com/3554410

参考URL:
http://jsdo.it/Tenderfeel/8LHi
gspopo
質問者

お礼

(※誤って補足に投稿してしまったので再投稿します) 丁寧に教えていただきありがとうございます! この通りにしてみたところリンク自体は別々に表示する事に成功したのですが、 いざそのリンクをクリックするとURL先に飛ばす、fancyboxの画面内でローディング状態になってしまい動きが止まってしまいます…。 本当に申し訳ないのですが、解決する方法はありませんでしょうか。

gspopo
質問者

補足

丁寧に教えていただきありがとうございます! この通りにしてみたところリンク自体は別々に表示する事に成功したのですが、 いざそのリンクをクリックするとURL先に飛ばす、fancyboxの画面内でローディング状態になってしまい動きが止まってしまいます…。 本当に申し訳ないのですが、解決する方法はありませんでしょうか。

関連するQ&A