Курсор не меняется на указатель в случае использования карты / области - PullRequest
21 голосов
/ 06 июля 2011

У меня есть следующий 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>

Я пытаюсь изменить курсор на указатель при перемещении по части карты использования.Но это не работает в Chrome / Safari.

Любая помощь будет оценена.

Ответы [ 6 ]

37 голосов
/ 19 августа 2011

Chrome и Safari не поддерживают изменение CSS элементов карты или области.Единственный простой способ получить указатель мыши в области - это иметь:

<area ... href="javascript:void(0);" />
21 голосов
/ 17 апреля 2013

Все эти решения - хаки, которые не работают хорошо (для меня они не работали вообще). После долгих поисков и поисков я решил, что проблема в том, что браузер просто не знает, как отобразить элемент области, поэтому его нельзя стилизовать. Если вы используете элементы HTML5, вы должны быть знакомы с этой задачей. Вот когда лампочка погасла ..

Чтобы обойти это, просто установите тег области как элемент уровня блока. Тогда вы можете оформить его по мере необходимости. Отлично сработало для меня:

area {
  display: block;
  cursor: pointer;
}
10 голосов
/ 27 августа 2012

Это должно работать на 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>
4 голосов
/ 01 августа 2012

IE не поддерживает изменение курсора в теге area.

Что вам нужно сделать, так это обмануть 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";
    }
}

Это сделает две вещи:

  • Позволит вам легко менять изображение в зависимости от изображения, которое они прокручивают.
  • Создаст иллюзию того, что только часть карты местности, которую вы прокручиваете, меняет курсор.
2 голосов
/ 24 сентября 2012

У меня была похожая проблема.Решением было добавить атрибут href="#" в область вместо взлома CSS.

1 голос
/ 15 сентября 2015

Я нашел отличное решение, используя Jquery!

$('area').hover(function(){
    //Set your cursor to whatever
    $('body').css('cursor', 'help');
}, function() {
    //set your cursor back to default
    $('body').css('cursor', 'initial');
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...