Customizable SVG Image Maps With jQuery - Mapify.js
| File Size: | 37.3 KB |
|---|---|
| Views Total: | 12002 |
| Last Update: | |
| Publish Date: | |
| Official Website: | Go to website |
| License: | MIT |
Mapify.js is a jQuery plugin for responsive image maps that enhances the image maps with custom CSS styles, SVG based clickable areas, and animated popover contents.
How to use it:
1. To get started, make sure jQuery library and the jQuery Mapify.js plugin are loaded properly in the document.
<link rel="stylesheet" href="jquery.mapify.css">
<script src="https://code.jquery.com/jquery-3.2.1.slim.min.js"
integrity="sha384-KJ3o2DKtIkvYIK3UENzmM7KCkRr/rE9/Qpg6aAZGJwFDMVNA/GpGFF93hXpG5KkN"
crossorigin="anonymous">
</script>
<script src="jquery.mapify.js"></script>
2. Insert an image into the document.
<img src="example.svg" usemap="#Map">
3. Add custom clickable area to the image.
- data-hover-class: custom hover class
- data-group-id: for grouped areas
- data-pop-over-class: custom popover class
<map name="Map" id="Map"> <area data-nbmembre="1" alt="Saint-Louis" title="Saint-Louis" href="#" shape="poly" coords="92.394,40.738, 218.265,178.666,228.589,153.08,225.747,144.878,241.33,128.802,210.934,99.067,211.084,95.177,214.824,86.499,215.273,79.616, 220.809,70.04,194.924,60.165,196.72,53.881,172.331,48.494,173.229,44.903,150.637,40.738,147.195,52.534,133.878,39.068, 137.32,28.445,122.657,13.483,92.394,40.738" /> <area data-nbmembre="2" id="dynamicClassChange" data-hover-class="customHover" alt="Saint-Marcel-de-Richelieu" title="Saint-Marcel-de-Richelieu" href="#" shape="poly" coords="210.934,99.067, 286.767,173.25,301.339,117.99,315.759,103.126,318.187,103.376,318.817,102.376,321.18,102.778,328.744,94.577,312.025,77.45, 316.25,61.097,264.438,9.869,252.62,51.902,230.878,42.352,230.829,49.813,227.568,57.111,226.606,62.517,222.036,70.161, 220.809,70.04,215.273,79.616,214.824,86.499,211.084,95.177" /> <area data-nbmembre="3" data-group-id="group-1" alt="Saint-Hugues" title="Saint-Hugues" href="#" shape="poly" coords="328.744,94.577, 321.18,102.778,318.817,102.376,318.187,103.376,315.759,103.126,301.339,117.99,286.767,173.25,241.33,128.802,225.747,144.878, 228.589,153.08,218.265,178.666,222.718,183.316,229.492,167.493,267.202,195.057,256.996,220.479,275.698,240.283,278.8,225.621, 287.392,217.841,288.525,209.25,292.416,202.767,367.625,275.533,400.255,241.712,375.581,216.026,413.172,178.666" /> <area data-nbmembre="4" data-pop-over-class="custom-popover" alt="Saint-Dominique" title="Saint-Dominique" href="#" shape="poly" coords="265.85,518.051, 364.091,619.145,373.192,576.105,394.408,491.211,367.606,464.853,381.174,430.486,345.658,398.081,307.889,493.557, 298.983,483.555" /> ... </map>
4. Initialize the plugin and activate the popover feature:
$("img[usemap]").mapify({
popOver: {
content: function(zone){
return "<strong>"+zone.attr("data-title")+"</strong>"+zone.attr("data-nbmembre")+" Members";
},
delay: 0.7,
margin: "15px",
height: "130px",
width: "260px"
}
});
5. Apply your own CSS styles to the image map.
/* Mapify custom popOver example */
.mapify-popOver strong {
font-weight: 400;
font-size: 24px;
line-height: 1em;
display: block;
margin-bottom: 10px;
color: #000;
}
.mapify-popOver {
color: #999;
font-size: 16px;
height: 130px;
}
.mapify-popOver-content {
position: relative;
top: 50%;
transform: translateY(-50%);
-webkit-transform: translateY(-50%);
}
.mapify-popOver.customPopOver { background: #09f; }
/* Custom hovering style */
.mapify-hover {
fill: rgba(0,0,0,0.15);
stroke: #fff;
stroke-width: 2;
}
.customHover {
fill: #09f;
stroke: #fff;
stroke-width: 2;
}
6. All available options an callback functions for the plugin.
$("img[usemap]").mapify({
hoverClass: false,
popOver: {
content: function (zone, imageMap) {
return '';
},
customPopOver: {
selector: false,
contentSelector: '.mapify-popOver-content',
visibleClass: 'mapify-visible',
alwaysVisible: false
},
delay: 0.8,
margin: '10px',
width: false,
height: false
},
onAreaHighlight: false,
onMapClear: false,
instantClickOnMobile: false
});
Change log:
2018-01-24
- Fixed 'data-group-id' not working
This awesome jQuery plugin is developed by etienne-martin. For more Advanced Usages, please check the demo page or visit the official website.











