JSFiddle - React, Tailwind, and code Playground
HTML
<script src="https://cdn.rawgit.com/davidjbradshaw/image-map-resizer/master/js/imageMapResizer.js"></script>
<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>
<div id="myWrapper">
<img id="myImage" src="http://tinypic.com/images/goodbye.jpg" usemap="#myMap" alt="" class="map" />
<map name="myMap" id="myMap">
<area id="left-eye" coords="118,36,148,80" shape="rect" href="javascript:void(0);">
<area id="mouth" coords="121,84,198,118" shape="rect">
</map>
<div id="myBubble">
<div id="myBubbleContent"></div>
<div id="myBubbleCloseButton">✕</div>
</div>
</div>
CSS
#myWrapper{ position: relative; font-family: Arial, Helvetica, sans-serif; }
#myImage{ display: block; }
#myBubble{ background: #fff; border: 1px solid #aaa; padding: .5rem 1rem; display: none; top: 1.5rem; left: 1.5rem; width: 40%; }
#myBubble.shown{position: fixed; display: block;cursor: pointer;font-size: 0.8rem;
margin-top: 0.2rem; filter: drop-shadow(0 2px 4px rgba(0,0,0,0.5)); width:20%; }
#myBubble.shown:before{
content: "";
position: absolute;
top: 20px;
left:-30px;
z-index: 1;
border: solid 15px transparent;
border-right-color: #FFF;
}
#myBubble img{ display: block; width: 100%;
}
#myBubbleCloseButton{ position: absolute; top: 0; right: 0; padding: .5rem; line-height: 1; cursor: pointer; color: #1A8782; }
#myBubbleCloseButton:hover{ color: #1A8782; }
JavaScript
$(function() {
$('.map').maphilight();
});
var myData = {
"left-eye": {
"title": "",
"image":"",
"description": "Lorem ipsum A dolor sin amet. ."
},
"mouth": {
"title": "",
"description": "Lorem ipsum B dolor sin amet. Lorem ipsum B dolor sin amet.Lorem ipsum B dolor sin amet.Lorem ipsum B dolor sin amet.Lorem ipsum B dolor sin amet.Lorem ipsum B dolor sin amet.Lorem ipsum B dolor sin amet.Lorem ipsum B dolor sin amet.vLorem ipsum B dolor sin amet.vLorem ipsum B dolor sin amet.Lorem ipsum B dolor sin amet.</p>Lorem ipsum B dolor sin amet."
},
};
var areas = document.getElementsByTagName('area'),
bubble = document.getElementById('myBubble'),
bubbleContent = document.getElementById('myBubbleContent'),
bubbleClose = document.getElementById('myBubbleCloseButton');
// On click of an area, open popup
for(var i=0, l=areas.length; i<l; i++) {
areas[i].addEventListener('click', openBubble, false);
}
// On click of close button, close popup
bubbleClose.addEventListener('click', closeBubble, false);
function openBubble() {
var content = myData[this.id];
bubbleContent.innerHTML = '<h3>' + content.title + '</h3>'
+ '<img src="' + content.image + '" alt="" />'
+ '<p>' + content.description + '</p>';
bubble.style.top = (event.clientY - 20) + "px";
bubble.style.left = (event.clientX - 200) + "px";
bubble.className = 'shown';
}
function closeBubble() {
bubble.className = '';
}
// Make the image map responsive
imageMapResize();
$.fn.maphilight.defaults = {
fill: true,
fillColor: '1A8782',
fillOpacity: 1,
stroke: true,
strokeColor: '#1A8782',
strokeOpacity: 1,
strokeWidth: 1,
fade: true,
alwaysOn: false,
neverOn: false,
groupBy: false,
wrapClass: true,
shadow: false,
shadowX: 0,
shadowY: 0,
shadowRadius: 6,
shadowColor: '000000',
shadowOpacity:...