在Usemap/area情况下,光标不会更改为指针

nit*_*tin 21 html cursor area

我有以下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>
Run Code Online (Sandbox Code Playgroud)

移动到usemap的一部分时,我试图将光标更改为指针.但它不适用于Chrome/Safari.

任何帮助将不胜感激.

Nic*_*ale 37

Chrome和Safari不支持更改地图或区域元素的CSS.在区域上获取鼠标指针的唯一直接方法是:

<area ... href="javascript:void(0);" />
Run Code Online (Sandbox Code Playgroud)


小智 21

所有这些解决方案都是效果不好的黑客(对我而言,根本不起作用).经过多次调整和更多的思考后,我确定问题是浏览器只是不知道如何渲染区域元素,因此它无法进行样式化.如果您使用的是HTML5元素,那么您应该熟悉这一挑战.那是灯泡熄灭的时候..

要解决此问题,只需将区域标记设置为块级元素即可.然后你可以根据需要设置样式.为我工作很棒:

area {
  display: block;
  cursor: pointer;
}
Run Code Online (Sandbox Code Playgroud)

  • 刚刚在 IE (8) 中尝试过,似乎也在那里工作。还有 Firefox 23 + chrome 33。很好的解决方案。它不适用于哪个版本的 IE? (2认同)
  • 如果没有 href 属性和只有 onclick 事件,这将无法在 IE8 或 10 中工作。虽然我尝试过这些是唯一的两个...... (2认同)

Jir*_*ong 10

这适用于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>
Run Code Online (Sandbox Code Playgroud)

  • 这应该是公认的答案,在最新版本的Chrome中工作正常 (2认同)