Почему подход <map>
не самый лучший:
Существует множество недостатков использования системы HTML image <map>
/ <area>
на ваших HTML-страницах. В частности, потому что, когда само изображение будет (должно) быть масштабируемым и динамичным в зависимости от размера экрана клиента, процесс настройки кликабельных элементов, относящихся к изображению, для отображения любого размера, просто не существует здесь.
Поскольку элементы HTML <map>
имеют абсолютный по своим масштабам и размеру, они не будут работать с содержимым динамического размера (width:80%
и т. Д.).
Что вы можете сделать вместо этого?
Есть несколько вариантов. Существует несколько систем Javascript , которые вы можете найти, которые будут динамически изменять размеры области <map>
, когда обнаружат размер окна (пере). Это, конечно, добавит некоторые накладные расходы, а также раздувание JS к загрузкам страниц.
ИЛИ Подожди, грядет барабанная дробь ... Слышишь?
ИСПОЛЬЗОВАТЬ SVG
Yep - S calable V ector G рафики - это будущее настоящее в отношении кликов при отображении изображений без накладных расходов Javascript Вы можете прочитать о них в их вики или в MDN .
Таким образом, используя SVG, вы можете импортировать стандартный формат изображения (например, JPG и т. Д.), А затем наложить его на точки привязки и интерактивные элементы, которые можно стилизовать с помощью стиля в стиле CSS, который дает значительно большую поддержку и возможности, чем старый синтаксис <map>
, такой как затухание, зависание, смешивание и размытие, все это происходит на статических изображениях из-за взаимодействия с пользователем в любой заданной точке на экране любого размера.
Покажи мне как!
Настоятельно рекомендуется это руководство по созданию интерактивной карты областей SVG для элемента изображения HTML.
(ссылки выделены для иллюстрации)
#backing {
vertical-align: middle;
margin: 0;
overflow: hidden;
}
#backing svg {
display: inline-block;
position: absolute;
top: 0; left: 0;
}
<figure id='backing'>
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 1280 504" preserveAspectRatio="xMinYMin meet" >
<image width="1280" height="504" xlink:href="https://cdn.pixabay.com/photo/2018/01/24/18/05/background-3104413_1280.jpg">
</image>
<a xlink:href="game1.html"><circle cx="243" cy="133" r="79" fill="#fff" opacity="0.15" /></a>
<a xlink:href="game2.html"><rect x="870" y="147" width="680" height="33" fill="#fff" opacity="0.25"/></a>
<a xlink:href="game3.html"><circle cx="889" cy="379" r="80" fill="#fff" opacity="0.1"/></a>
<a xlink:href="https://code.org/educate/csp"><circle cx="770" cy="671" r="73" fill="#fff" opacity="0.2"/></a>
<a xlink:href="game4.html"><polygon id="test" points="163,587 214,492 267,473 335,483 377,603 327,631 249,658 211,641" fill="#fff" opacity="0.3"/></a>
</svg>
</figure>