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; i<coords.length; i++){
if(i%2 == 0){
max_l = (max_l < Number(coords[i]))?Number(coords[i]):max_l;
min_l = (min_l > Number(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 = '<div class="overblock ' + $(this).attr("class")
div += '" id="num_' + id + '">' + id.substring(2) + "</div>"
$("#map").append(div)
$("#num_" + id).css({ "left": left, "top": top });
$("#num_" + id).hover(
function () {
add_highlight(id);
},
function () {
remove_highlight(id);
}
);
}
);
} - Можем удалить $(window).resize и функцию удаления кружочков
В итоге, избавляемся от багов в Опере, от необходимости перепроверять позиционирование при изменении размеров окна и можем смело отключить расширение Dimensions.
Спасибо Игорю, что направил на путь истинный.
Комментариев нет:
Отправить комментарий