Если вы не возражаете против того, чтобы область наведения была «квадратной», тогда с помощью чистого CSS это должно сработать (обратите внимание, замените цвета фона на соответствующее изображение, а border
на a
только для иллюстрации).Протестировано в Firefox, IE7, IE8:
HTML:
<a href="#"><span class="img"></span></a>
CSS (отредактировано для ошибок IE7-8) :
body {
margin: 300px 218px 178px 400px; /*see explanation below css*/
width: 22px; /*total width of a tag including padding and borders*/
height: 22px; /*total height of a tag including padding and borders*/
}
a { /*warning, do not give this position: use margin to position it*/
width: 20px;
height: 20px;
display: block;
border: 1px solid red;
overflow: visible;
/*deleted margin from this: moved to body*/
}
a span.img {
position: absolute; /*this gives it block display by default*/
top: 0;
left: 0;
z-index: -1;
background-color: yellow; /*bw image here*/
width: 640px; /*image width*/
height: 500px; /*image height*/
}
a:hover span.img {
background-color: blue; /*color image here*/
}
/*deleted the a:hover span.img:hover as it was not needed after all*/
Конечно, если IE6 вызывает беспокойство, то вам нужно сделать что-то с javascript, чтобы он распознал span:hover
.
ДОБАВЛЕНО В РЕДАКТИРОВАНИЕ: Я обнаружил, что тег a
будетиногда зависать за пределами определенной области для браузеров IE.Чтобы избежать этого, на теле должны быть поля, размещенные таким образом, чтобы left
и top
располагали тег a
, а right
и bottom
должны составлять разницу вразмер изображения минус общая ширина тега a
.