У меня сложное фоновое изображение с множеством небольших областей, которые нуждаются в выделении при наведении курсора, а также с дополнительным отображением текста и связанными ссылками для каждой из них. На финальной иллюстрации несколько статических изображений наложены прозрачно с использованием z-индекса, и иллюстрации ролловеров с подсветкой должны отображаться в одном из промежуточных слоев «сэндвич» для достижения желаемого эффекта.
После некоторой неудачной игры с блоками я решил, что это можно сделать с помощью старой карты изображений. Я сделал схематическую тестовую карту с четырьмя контурами геометрических фигур и «залил» их, используя png rollovers. Идея состоит в том, чтобы связать карту изображения с нижним фоновым слоем, инициализировать все ролловеры с помощью css {visibility: hidden} и использовать метод наведения курсора Jquery, чтобы сделать их видимыми, а также показать связанный текст в отдельном элементе div. Отдельная текстовая функция - вот почему я не пытаюсь сделать это с помощью псевдокласса: hover вместо jQuery hover. Поскольку я использовал карту изображений, я сделал все роллинговые png-файлы (с прозрачным фоном) размером в полный контейнер для точного размещения, чтобы все выстраивалось точно.
То, что я получил, работает ... не совсем! Карта изображения правильно сопоставлена, чтобы активировать только геометрические области. Но href из каждой области ролловера работает только периодически, и использование Jquery hover с css видимостью испортилось. Желаемое поведение состоит в том, что прикатывание в область просто сделает форму твердой. На самом деле происходит то, что любое движение внутри фигуры делает быстрое переключение между видимым и скрытым; когда курсор останавливается внутри фигуры, он может быть видимым или нет. Любые идеи приветствуются!
пример настройки наведения (в конечном итоге я буду использовать массивы для реальных ролловеров, связанных ссылок и текста):
$('#triangle').hover(
function() {
$('#ID_triangle').css({'visibility' : 'visible'});
},
function() {
$('#ID_triangle').css({'visibility' : 'hidden'});
}
)
изображение карты:
<div id="container">
<img src="images/testMap_w.png" width="800" height="220" alt="TestMap W" usemap="#testMap">
<map name="testMap">
<area shape="polygon" coords="20,20,106,20,106,106,20,106" href="http://www.stackoverflow.com" id="box" />
<area shape="polygon" coords="216,50,339,50,277,156" href="http://www.google.com" id="triangle" />
<area shape="polygon" coords="460,0,574,0,460,220" href="http://www.cnn.com" id="bordertriangle" />
<area shape="polygon" coords="704,65,769,115,744,196,665,196,640,115" href="http://slashdot.org" id="pentagon" />
</map>
<img src="images/testMap_box.png" width="800" height="220" alt="TestMap Box" id="ID_box">
<img src="images/testMap_triangle.png" width="800" height="220" alt="TestMap Triangle" id="ID_triangle">
<img src="images/testMap_border_triangle.png" width="800" height="220" alt="TestMap Border Triangle" id="ID_bordertriangle">
<img src="images/testMap_pentagon.png" width="800" height="220" alt="TestMap Pentagon" id="ID_pentagon">
</div>