イメージマップのレスポンシブ対応と、iPhone の Chrome 対策
たとえばこんな HTML と CSS があるとしよう。
<body>
<img src="hoge.png" usemap="#map_hoge">
<map name="map_hoge" id="map_hoge">
<area shape="poly" coords=" ... " href="fuga.html">
</map>
</body>
img {
width: 100%;
}
ブラウザの横幅が hoge.png の width と(たまたま)同じであれば問題ないのだが、基本的には異なってしまうため、area タグの coords 属性で指定した座標が本来の位置からずれることになる。ツイート中で紹介している jQuery RWD Image Maps は、まさにこの問題を解決してくれる jQuery プラグイン。使い方もこんなに簡単だ。
$('img[usemap]').rwdImageMaps();
あ、実際には jQuery 本体と jquery.rwdImageMaps.js(もしくは jquery.rwdImageMaps.min.js)を読み込み、$(document).ready()
などを使って記述してください。
あと念のためフォローしておくと、前述の HTML と CSS を iPhone の Chrome でも正常に動作させるには、以下のようにすればいい(hoge.png の width と height が共に 600px という前提)。
<body>
<img src="hoge.png" width="600" height="600" usemap="#map_hoge">
<map name="map_hoge" id="map_hoge">
<area shape="poly" coords=" ... " href="fuga.html">
</map>
</body>
img {
width: 100%;
height: auto;
}