約70のエリアを含むイメージマップを表示する必要があります。マウスカーソルが現在あるイメージマップの領域は、特定の色で強調表示されることになっています。
これは可能ですか?もしそうなら、どのように?
実際に本番環境で使用した後、これが答えだと思います: http://plugins.jquery.com/project/maphilight
これを使用すると、イメージマップにその機能を実装するのに数行のコードが必要です。
はい、これは可能です。私はjqueryとイメージマップエリアのmouseenter/mouseleaveイベントで正確なことを行いましたが、70のエリアでは行いませんでした。それはあなたにとってより多くの仕事になるでしょう。マウスオーバーでajax呼び出しを介して画像を読み込むか、スプライトと配置を使用して70枚の画像をDOMに読み込む必要がないようにすることを検討してください。
jquery:
$(document).ready(function() {
$(".map-areas area").mouseenter(function() {
var idx = $(".map-areas area").index(this);
$(".map-hovers img:eq(" + idx + ")").show();
return false;
}).mouseleave(function() {
$(".map-hovers img").hide();
return false;
});
});
ここで、.map-hoversは、マップの上に配置するすべての画像を含むdivです。必要に応じて配置するか、画像をイメージマップと同じサイズにしますが、透明度を持たせます。
そして従うべきいくつかのhtml:
注:イメージマップ領域のインデックスが、マップホバーコンテナ内のimgインデックスとどのように一致しているかに注意してください。また、イメージマップは透明なgifを指し、背景画像を表示する実際の画像に設定する必要があります。これはクロスブラウザのことです-正確な理由を思い出せません。
<div id="container">
<img src="/images/trans.gif" width="220" height="238" class="map-trans" alt="Map / Carte" usemap="#region-map" />
<div class="map-hovers">
<img src="/images/map/sunset-country.png" alt="Sunset Country" />
<img src="/images/map/north-of-superior.png" alt="North of Superior" />
<img src="/images/map/algomas-country.png" alt="Algoma's Country" />
<img src="/images/map/ontarios-wilderness.png" alt="Ontario's Wilderness" />
<img src="/images/map/Rainbow-country.png" alt="Rainbow Country" />
<img src="/images/map/ontarios-near-north.png" alt="Ontario's Near North" />
<img src="/images/map/muskoka.png" alt="Muskoka" />
</div>
</div>
<map name="region-map" id="region-map" class="map-areas">
<area shape="poly" coords="52,19,53,82,36,114,34,126,26,130,5,121,2,110,7,62" href="#d0" alt="Sunset Country" />
<area shape="poly" coords="93,136,93,113,82,112,77,65,57,51,58,82,41,122,33,133,58,138,74,126" href="#d1" alt="North of Superior" />
<area shape="poly" coords="98,112,118,123,131,149,130,165,108,161,97,138" href="#d2" alt="Algoma's Country" />
<area shape="poly" coords="68,2,100,29,124,33,133,74,155,96,159,145,134,146,121,119,101,110,83,107,83,65,55,45,54,16" href="#d3" alt="Ontario's Wilderness" />
<area shape="poly" coords="151,151,152,167,157,176,152,179,137,178,124,172,133,169,135,150" href="#d4" alt="Rainbow Country" />
<area shape="poly" coords="160,150,170,167,169,173,160,171,155,162,153,149" href="#d5" alt="Ontario's Near North" />
<area shape="poly" coords="173,176,162,177,154,184,167,189,178,183" href="#d6" alt="Muskoka" />
</map>
ScottEのソリューションを使用しようとしましたが、残念ながら、ターゲット画像をボディの背景として追加する必要がありました。
私の解決策は彼に非常に近いですが、適切な画像を使用しています
jQuery:
$(document).ready(function() {
$(".map-areas area").mouseenter(function() {
var idx = $(".map-areas area").index(this);
$(".map-hovers img:eq(" + idx + ")").show();
return false;
});
$(".map-hovers img").mouseleave(function() {
$(".map-hovers img").hide();
return false;
});
});
ここでの重要な概念は、マップ領域に入ると、マップホバー画像を表示し、それがマウスの下のアクティブレイヤーになるということです。その画像を離れるタイミングを検出するだけで、スムーズに作成できます。
HTML :(ほぼ同じ、トランスイメージは必要ありません)
<div id="container">
<img src="/images/full-map.png" width="220" height="238" class="map-trans" alt="Map / Carte" usemap="#region-map" />
<div class="map-hovers">
<img src="/images/map/sunset-country.png" alt="Sunset Country" />
<img src="/images/map/north-of-superior.png" alt="North of Superior" />
<img src="/images/map/algomas-country.png" alt="Algoma's Country" />
<img src="/images/map/ontarios-wilderness.png" alt="Ontario's Wilderness" />
<img src="/images/map/Rainbow-country.png" alt="Rainbow Country" />
<img src="/images/map/ontarios-near-north.png" alt="Ontario's Near North" />
<img src="/images/map/muskoka.png" alt="Muskoka" />
</div>
</div>
<map name="region-map" id="region-map" class="map-areas">
<area shape="poly" coords="52,19,53,82,36,114,34,126,26,130,5,121,2,110,7,62" href="#d0" alt="Sunset Country" />
<area shape="poly" coords="93,136,93,113,82,112,77,65,57,51,58,82,41,122,33,133,58,138,74,126" href="#d1" alt="North of Superior" />
<area shape="poly" coords="98,112,118,123,131,149,130,165,108,161,97,138" href="#d2" alt="Algoma's Country" />
<area shape="poly" coords="68,2,100,29,124,33,133,74,155,96,159,145,134,146,121,119,101,110,83,107,83,65,55,45,54,16" href="#d3" alt="Ontario's Wilderness" />
<area shape="poly" coords="151,151,152,167,157,176,152,179,137,178,124,172,133,169,135,150" href="#d4" alt="Rainbow Country" />
<area shape="poly" coords="160,150,170,167,169,173,160,171,155,162,153,149" href="#d5" alt="Ontario's Near North" />
<area shape="poly" coords="173,176,162,177,154,184,167,189,178,183" href="#d6" alt="Muskoka" />
</map>
1.Step:Add jquery.min.js
2.Step:Add jquery.maphilight.js
3.Step:Add the $('.map').maphilight();
<!DOCTYPE html>
<html>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/maphilight/1.4.0/jquery.maphilight.min.js"></script>
<script type="text/javascript">
$(function() {
$('.map').maphilight();
});
</script>
<body>
<div>
<div class="imginfo"><span></span></div>
<img src="https://upload.wikimedia.org/wikipedia/commons/d/de/Windows_live_square.JPG" usemap="#image-map" class="map">
<map name="image-map">
<area target="" alt="" title="" href="" coords="0,0,144,146" shape="rect">
<area target="" alt="" title="" href="" coords="152,1,299,146" shape="rect">
<area target="" alt="" title="" href="" coords="2,149,143,299" shape="rect">
<area target="" alt="" title="" href="" coords="152,152,300,299" shape="rect">
</map>
</div>
</body>
</html>
それを行うクールな方法があるかどうかはわかりませんが、ブロック要素の背景画像として写真を撮り、透明な写真とイメージマップでオーバーレイしてから、マウスオーバーイベントでこの透明な写真をその領域が強調表示されている画像。
欠点として、強調表示された領域の70枚の画像が必要になります