// Pre-select elements
var map = $("#map"),
canvas = map.find(".map-canvas");
// Sets canvas to be 100% width and 100% height
map.css("width", window.innerWidth);
map.css("height", window.innerHeight);
// Calculate canvas constraints
var maxLeft = map.width() - canvas.width(),
maxTop = map.height() - canvas.height();
// Make canvas draggable
canvas.draggable({
drag: function(e, ui) {
// Check if canvas is within constraints
if (ui.position.left > 0) {
ui.position.left = 0;
} else if (ui.position.left < maxLeft) {
ui.position.left = maxLeft;
}
if (ui.position.top > 0) {
ui.position.top = 0;
} else if (ui.position.top < maxTop) {
ui.position.top = maxTop;
}
}
});
// Jagga
$("<div></div>")
.addClass("map-marker")
.addClass("ork")
.appendTo(canvas)
.offset(function() {
return {
left: 1463,
top: 784
};
})
.append("<p>Jagga</p>");
// Shaa-dom
$("<div></div>")
.addClass("map-marker")
.addClass("webway")
.appendTo(canvas)
.offset(function() {
return {
left: 643,
top: 785
};
})
.append("<p>Shaa-dom</p>");
// Telias
$("<div></div>")
.addClass("map-marker")
.addClass("unknown")
.appendTo(canvas)
.offset(function() {
return {
left: 145,
top: 40
};
})
.append("<p>Telias</p>");
// Deluge
$("<div></div>")
.addClass("map-marker")
.addClass("death")
.appendTo(canvas)
.offset(function() {
return {
left: 54,
top: 104
};
})
.append("<p>Deluge</p>");
// XD-777
$("<div></div>")
.addClass("map-marker")
.addClass("other")
.appendTo(canvas)
.offset(function() {
return {
left: 150,
top: 90
};
})
.append("<p>XD-777</p>");
// Orbiana
$("<div></div>")
.addClass("map-marker")
.addClass("imperial")
.appendTo(canvas)
.offset(function() {
return {
left: 200,
top: 22
};
})
.append("<p>Orbiana</p>");
// Maesa
$("<div></div>")
.addClass("map-marker")
.addClass("imperial")
.appendTo(canvas)
.offset(function() {
return {
left: 235,
top: 34
};
})
.append("<p>Maesa</p>");
// KW-9
$("<div></div>")
.addClass("map-marker")
.addClass("unknown")
.appendTo(canvas)
.offset(function() {
return {
left: 98,
top: 120
};
})
.append("<p>KW-9</p>");
// Caliban
$("<div></div>")
.addClass("map-marker")
.addClass("imperial")
.appendTo(canvas)
.offset(function() {
return {
left: 2424,
top: 176
};
})
.append("<p>Caliban</p>");
// Medusa
$("<div></div>")
.addClass("map-marker")
.addClass("imperial")
.appendTo(canvas)
.offset(function() {
return {
left: 2420,
top: 229
};
})
.append("<p>Medusa</p>");
// Eidolon
$("<div></div>")
.addClass("map-marker")
.addClass("chaos")
.appendTo(canvas)
.offset(function() {
return {
left: 2545,
top: 288
};
})
.append("<p>Eidolon</p>");
// Belial IV
$("<div></div>")
.addClass("map-marker")
.addClass("chaos")
.appendTo(canvas)
.offset(function() {
return {
left: 2683,
top: 114
};
})
.append("<p>Belial IV</p>");
// Rubicon Straits
$("<div></div>")
.addClass("map-marker")
.addClass("feature")
.appendTo(canvas)
.offset(function() {
return {
left: 2543,
top: 108
};
})
.append("<p>Rubicon Straits</p>");
// Warp Storm Germanicus
$("<div></div>")
.addClass("map-marker")
.addClass("feature")
.appendTo(canvas)
.offset(function() {
return {
left: 2717,
top: 149
};
})
.append("<p>Warp Storm Germanicus</p>");
// Ulthwe Craftworld
$("<div></div>")
.addClass("map-marker")
.addClass("eldar")
.appendTo(canvas)
.offset(function() {
return {
left: 2781,
top: 180
};
})
.append("<p>Ulthwe Craftworld</p>");
// Altansar Craftworld
$("<div></div>")
.addClass("map-marker")
.addClass("eldar")
.appendTo(canvas)
.offset(function() {
return {
left: 2625,
top: 172
};
})
.append("<p>Altansar Craftworld</p>");
// Nemesis Tessera
$("<div></div>")
.addClass("map-marker")
.addClass("imperial")
.appendTo(canvas)
.offset(function() {
return {
left: 2822,
top: 219
};
})
.append("<p>Nemesis Tessera</p>");
// Belis Corona
$("<div></div>")
.addClass("map-marker")
.addClass("imperial")
.appendTo(canvas)
.offset(function() {
return {
left: 2843,
top: 272
};
})
.append("<p>Belis Corona</p>");
// Cadia
$("<div></div>")
.addClass("map-marker")
.addClass("imperial")
.appendTo(canvas)
.offset(function() {
return {
left: 2786,
top: 294
};
})
.append("<p>Cadia</p>");
// Agripinaa
$("<div></div>")
.addClass("map-marker")
.addClass("imperial")
.appendTo(canvas)
.offset(function() {
return {
left: 2838,
top: 332
};
})
.append("<p>Agripinaa</p>");
// Cadian Gate
$("<div></div>")
.addClass("map-marker")
.addClass("feature")
.appendTo(canvas)
.offset(function() {
return {
left: 2664,
top: 287
};
})
.append("<p>Cadian Gate</p>");
// Warp Storm Hippocrene
$("<div></div>")
.addClass("map-marker")
.addClass("feature")
.appendTo(canvas)
.offset(function() {
return {
left: 2631,
top: 442
};
})
.append("<p>Warp Storm Hippocrene</p>");
// Scelus
$("<div></div>")
.addClass("map-marker")
.addClass("imperial")
.appendTo(canvas)
.offset(function() {
return {
left: 2458,
top: 351
};
})
.append("<p>Scelus</p>");
// Chinchare
$("<div></div>")
.addClass("map-marker")
.addClass("other")
.appendTo(canvas)
.offset(function() {
return {
left: 2552,
top: 408
};
})
.append("<p>Chinchare</p>");
// Sentinel Worlds
$("<div></div>")
.addClass("map-marker")
.addClass("area")
.appendTo(canvas)
.offset(function() {
return {
left: 2512,
top: 470
};
})
.append("<p>Sentinel Worlds</p>");
// Segmentum Ultima
$("<div></div>")
.addClass("map-marker")
.addClass("segmentum")
.appendTo(canvas)
.offset(function() {
return {
left: 1535,
top: 1060
};
})
.append("<p>Segmentum Ultima</p>");
// Segmentum Tempestus
$("<div></div>")
.addClass("map-marker")
.addClass("segmentum")
.appendTo(canvas)
.offset(function() {
return {
left: 1535,
top: 1060
};
})
.append("<p>Segmentum Tempestus</p>");
// Segmentum Obscurus
$("<div></div>")
.addClass("map-marker")
.addClass("segmentum")
.appendTo(canvas)
.offset(function() {
return {
left: 600,
top: 911
};
})
.append("<p>Segmentum Obscurus</p>");
// Ocularis Terribus
$("<div></div>")
.addClass("map-marker")
.addClass("feature")
.appendTo(canvas)
.offset(function() {
return {
left: 550,
top: 1125
};
})
.append("<p>Ocularis Terribus</p>");
// Segmentum Pacificus
$("<div></div>")
.addClass("map-marker")
.addClass("segmentum")
.appendTo(canvas)
.offset(function() {
return {
left: 965,
top: 1402
};
})
.append("<p>Segmentum Pacificus</p>");
// Segmentum Solar
$("<div></div>")
.addClass("map-marker")
.addClass("segmentum")
.appendTo(canvas)
.offset(function() {
return {
left: 950,
top: 1122
};
})
.append("<p>Segmentum Solar</p>");
// Tau Empire
$("<div></div>")
.addClass("map-marker")
.addClass("area")
.appendTo(canvas)
.offset(function() {
return {
left: 2222,
top: 743
};
})
.append("<p>Tau Empire</p>");
<div id="map">
<div class="map-canvas"></div>
</div>
* {
/* to remove the top and left whitespace */
margin: 0;
padding: 0;
}
html,
body {
/* just to be sure these are full screen*/
width: 100%;
height: 100%;
}
canvas {
/* To remove the scrollbars */
display: block;
}
#map {
position: relative;
overflow: hidden;
}
.map-canvas {
position: absolute;
background: black url(http://jambonium.co.uk/40kmap/images/map_background.png) no-repeat;
background-size: 100% 100%;
width: 2904px;
height: 1687px;
}
#map .ui-draggable-dragging {
cursor: -moz-grabbing;
cursor: -webkit-grabbing;
cursor: grabbing;
}
.map-marker {
width: 0px;
height: 0px;
-moz-border-radius: 2px;
border-radius: 3px;
overflow: visible;
color: #fff;
font-size: 85%;
}
.imperial {
background-color: blue;
border: 3px solid blue;
}
.chaos {
background-color: red;
border: 3px solid red;
}
.tau {
background-color: yellow;
border: 3px solid yellow;
}
.ork {
background-color: green;
border: 3px solid green;
}
.eldar {
background-color: turquoise;
border: 3px solid turquoise;
}
.darkeldar {
background-color: maroon;
border: 3px solid maroon;
}
.exodite {
background-color: cyan;
border: 3px solid cyan;
}
.necron {
background-color: grey;
border: 3px solid grey;
}
.webway {
background-color: pink;
border: 3px solid pink;
}
.dead {
background-color: brown;
border: 3px solid brown;
}
.death {
background-color: black;
border: 3px solid black;
}
.other {
background-color: magenta;
border: 3px solid magenta;
}
.unknown {
background-color: white;
border: 3px solid white;
}
.feature {
font-size: 115%;
font-style: italic;
}
.area {
font-size: 155%;
font-weight: bold;
font-style: italic;
}
.segmentum {
font-size: 250%;
font-weight: bold;
}
.map-marker p {
position: absolute;
top: -10px;
left: 10px;
width: 350px;
}
.map-marker p span {
font-style: italic;
}