JS-Imagemapping — исправленно.
В предыдущем посте я написал как делается активный imagemapping на jQuery.
Но по какой-то непонятной причине мой мозг в один момент глюканул и решил, что указывать абсолютное позиционирование относительно всего документа — единственный вариант. А ведь это не правда.
Исправляем
- В CSS добавляем относительное позиционирование тэгу div с id=”map”:
#map{ position: relative; }Теперь кружочки будут позиционироваться относительно этого дива, а не относительно body.
- В коде исправляем позиционирование удалив координаты карты и добавляя кружочки не в body а в #map.
function add_numbers(){ $("area").each( function(){ var id = $(this).attr("href").substring(1); var coords = $(this).attr("coords").split(","); var max_l = 0, min_l = 9999, max_t = 0, min_t = 9999; for(i=0; iNumber(coords[i]))?Number(coords[i]):min_l; } else { max_t = (max_t < Number(coords[i]))?Number(coords[i]):max_t; min_t = (min_t > Number(coords[i]))?Number(coords[i]):min_t; } } var left = Math.floor((max_l+min_l)/2) - 11; var top = Math.floor((max_t+min_t)/2) - 11; var div = ' ' + id.substring(2) + "" $("#map").append(div) $("#num_" + id).css({ "left": left, "top": top }); $("#num_" + id).hover( function () { add_highlight(id); }, function () { remove_highlight(id); } ); } ); } - Можем удалить $(window).resize и функцию удаления кружочков
В итоге, избавляемся от багов в Опере, от необходимости перепроверять позиционирование при изменении размеров окна и можем смело отключить расширение Dimensions.
Спасибо Игорю, что направил на путь истинный.





]]>Seleckis.lv :: журнал Никиты Селецкого » » Активный imagemapping на jQuery]]>[...] и упрощаем в следующем посте. Дата: 06.12.2007 » Комментарии (10) Категории: JavaScript | [...]
»