Ответ 1
Chrome и Safari не поддерживают изменение CSS элементов карты или области. Единственный простой способ получить указатель мыши на области - это:
<area ... href="javascript:void(0);" />
У меня есть следующий HTML-код, который я не могу нормально работать во всех браузерах:
<div id ="right_header">
<img id = "usemapsignin" src="/images/sign-in-panel-wo-FB.png" usemap = "#signin">
</div>
<map name = "signin" >
<area shape = "rect" coords = "30,10, 150, 50" target = "_blank" alt = "signin" id="signin"
onMouseOver="document.images['usemapsignin'].style.cursor='pointer'"
onMouseOut="document.images['usemapsignin'].style.cursor='auto'"/>
<area shape = "rect" coords = "0,113, 172, 150" target = "_blank" alt = "restowner" id = "restowner"
onclick = "alert('Hello Restaurant Owner!')" />
</map>
Я пытаюсь изменить курсор на указатель при перемещении по части usemap. Но он не работает в Chrome/Safari.
Любая помощь будет оценена.
Chrome и Safari не поддерживают изменение CSS элементов карты или области. Единственный простой способ получить указатель мыши на области - это:
<area ... href="javascript:void(0);" />
Все эти решения - хаки, которые не работают должным образом (для меня они не работали вообще). После долгих поисков и поисков я решил, что проблема в том, что браузер просто не знает, как отобразить элемент области, поэтому его нельзя стилизовать. Если вы используете элементы HTML5, вы должны быть знакомы с этой задачей. Это когда лампочка погасла..
Чтобы обойти это, просто установите тег области как элемент уровня блока. Тогда вы можете оформить его по мере необходимости. Отлично сработало для меня:
area {
display: block;
cursor: pointer;
}
Это должно работать на IE, Firefox, Chrome и Safari.
<img id="img_id" src="image.gif" border="0" usemap="#map4" />
<map id ="map4" name="map4">
<area shape ="poly" coords="5, 0, 100, 10, 94, 66, 0, 50"
href="javascript:void(0);"
onmouseover="document.getElementById('img_id').style.cursor='pointer';"
onmouseout="document.getElementById('img_id').style.cursor='';">
</map>
IE не поддерживает изменение курсора в теге области.
Что вам нужно сделать, это обмануть его с помощью JS.
<img id="someimage" scr="images/image.jpg" usemap="#myareamap" />
<map name="myareamap">
<area shape="poly" alt="test" title="test" coords="0,0, 50,50, 50,100, 0,100, 0,0" onmouseover="changeimage('someimage', 'newimagesrc')" />
</map>
это в вашем javascript
function changeimage(id, imagesrc){
document.getElementById(id).src = imagsrc;
if (imagesrc = "images/image.jpg"){
document.getElementById(id).style.cursor = "default";
} else {
document.getElementById(id).style.cursor = "pointer";
}
}
Это будет делать две вещи:
У меня была аналогичная проблема. Это решение добавило атрибут href="#"
в область вместо того, чтобы делать CSS-хак.
Я нашел отличное решение с помощью JQuery!
$('area').hover(function(){
//Set your cursor to whatever
$('body').css('cursor', 'help');
}, function() {
//set your cursor back to default
$('body').css('cursor', 'initial');
})