Map Image with Easy Dots and Titles using only CSS
I had to quickly add some dot points with names to a map the other day, so i thought i should probably look for a jquery library for tool tips or something similar. But then i thought why not just add these elements as CSS and then utilize the hover attribute to hide and show the labels.
This is what i ended up with, a nice simple map image set to relative and then add the dot points to the map using the absolute positioning and this way you can easily move them all around the map, and they stay in the correct position as long as the map image stays the same height and width.
Getting the Map Image
Just have a look on the free image sites such as unsplash.com and you should be able to find a map image you can use as a background.
Adding the map image
You can do this in a simple div using the background element and then set the backgroound image to cover. Then make sure you set the width and height of the div to match the dimentions of the image, or the width of the element you are adding the image too, this needs to be set before adding the marker dots as the position of these will be based on the main map height and width.
Adding a Title and Dot
The titles and dots can be added into the map-wrap div, and you can add as many as you like. Just make sure they dont overlay each other or it might get too confusing.
To add a new title and dot, just add another class called map-dot-[number] and add the new title and move it around, you can use the percentage or the pixels depending on how accurate you need it to be.
If you use the percentage it should scale as the image width is changed if you need it to work that way.
Links
Codepen: https://codepen.io/kruxor/pen/WNzWpdK
Images: https://unsplash.com/photos/eyfMgGvo9PA https://i.imgur.com/qHVGYKx.jpeg
Map Image with Easy Dots and Titles using only CSS Demo
View Demo Full Screen View Demo New Tab
Map Image with Easy Dots and Titles using only CSS Code
HTML
<div class='map-wrap'>
<div class='map-dot map-dot-1'>
<div class='dot-content'>
CSS Bundle 1
</div>
</div>
<div class='map-dot map-dot-2'>
<div class='dot-content'>
CSS Bundle 2
</div>
</div>
</div>
CSS
* {
font-family:sans-serif;
}
.map-wrap {
background:url(https://i.imgur.com/qHVGYKx.jpeg) center no-repeat;
background-size:cover;
height:500px;
width:800px;
margin:0 auto;
position:relative;
}
.map-dot:hover .dot-content {
display:block!important;
}
.dot-content {
background:rgba(255,255,255,0.8);
padding:10px;
border-radius:10px;
box-shadow:1px 1px 10px rgba(0,0,0,0.3);
min-width:150px;
font-size:14px;
text-align:center;
display:none;
font-weight:bold;
color:#444;
}
.map-dot:hover {
background:rgba(255,255,255,0.0);
}
.map-dot {
background:rgba(255,255,255,0.5);
border-radius:20px;
height:30px;
width:30px;
position:absolute;
}
.map-dot-1 {
top:374px;
left:212px;
}
.map-dot-2 {
top:10%;
left:10%;
}