Вот решение, которое я быстро собрал, используя jQuery.Его можно легко изменить, чтобы использовать Vanilla Javascript, но ради его быстрого написания я прибег к фреймворку.
В основном он состоит из <div>
, который относительно позиционирован, с якорями как графики , которые абсолютно позиционированы .Это позволяет нам использовать координаты для позиционирования графиков в любом месте в пределах относительной <div>
.
. Вы можете создать несколько значков, которые будут представлять разные графики на графике, и назначить их для привязки элементов.
Чтобы все было легко и просто, я использовал объект JSON для хранения каждого сюжета , чтобы вы могли использовать егоиз стороннего источника.
// change this to fit your needs
var plots = [
{"width":30,"height":30, "top": 150, "left": 100, "content": "Lorem"},
{"width":20,"height":20, "top": 100, "left": 20, "content": "Ipsum"},
{"width":50,"height":50, "top": 20, "left": 20, "content": "Dolor"}
];
// store our 2 divs in variables
var $content = $("#content");
var $map= $("#map");
// Iterate through each plot
$.each(plots, function() {
// store 'this' in a variable (mainly because we need to use it inside hover)
var plot = this;
// create a new anchor and set CSS properties to JSON values
var $plot = $("<a />")
.css({
'width': plot.width,
'height': plot.height,
'top': plot.top,
'left': plot.left
})
.hover(function() {
// replace content of target div
$content.html(plot.content);
});
// Add the plot to the placeholder
$map.append($plot);
});
Надеюсь, я написал это простым для понимания способом:)
Обратите внимание, что всевсего вышеперечисленного можно достичь, используя только HTML / CSS, просто проверьте источник, чтобы увидеть, что именно создается.
Вот демонстрация