悬停时如何更改图像的一部分?
How to change part of an image when it is hovered?
我想在鼠标悬停时更改图像的一部分。
我已经为图像定义了一个地图,有 2 个区域(圆圈)。
对于第一个,我尝试通过 onmouseover 在该区域上悬停圆圈时更改图像的 src。但它在 Firefox 上闪烁,所以它似乎不起作用。
对于第二个,我让一张图片出现在另一张图片之上。它在 Firefox 上工作正常(除非我用 onmousemove 添加工具提示,然后它也会不停地闪烁)。
这两种情况在 Edge 上似乎都不起作用。它甚至没有进入 page_bar_mousehover(...) 函数。我不明白为什么,因为地图和区域似乎受支持。
如何使这个工作和跨浏览器兼容?
function page_bar_mousehover(item) {
switch (item) {
case "tooltips_choices":
document.getElementById('page_bottom_right_bar').src = "./resources/page_bottom_right_bar_hover_tooltips.png";
break;
case "hexes_choices":
if (document.getElementById('page_bottom_right_bar_hover_hexes_img').style != "") {
document.getElementById('page_bottom_right_bar_hover_hexes_img').style = "";
}
break;
}
}
function page_bar_mouseout() {
document.getElementById('page_bottom_right_bar').src = "https://i.ibb.co/zS1g5jK/page-bottom-right-bar.png";
document.getElementById('page_bottom_right_bar_hover_tooltips_img').style = "display:none;";
document.getElementById('page_bottom_right_bar_hover_hexes_img').style = "display:none;";
}
html {
height:100%;
}
body {
min-height:100%;
background-color: black;
margin: 0;
}
#page_bottom_right_bar_hover_hexes_img, #page_bottom_right_bar_hover_tooltips_img {
position:fixed;
right:0;
bottom:0;
}
<div id="main">
<img id="page_bottom_right_bar" src="https://i.ibb.co/zS1g5jK/page-bottom-right-bar.png" style="position:fixed;right:0;bottom:0;" usemap="#page_bottom_right_bar" />
<img id="page_bottom_right_bar_hover_hexes_img" src="https://i.ibb.co/Dt8b5Vb/page-bottom-right-bar-hover-hexes.png" usemap="#page_bottom_right_bar" style="display:none;" />
<img id="page_bottom_right_bar_hover_tooltips_img" src="https://i.ibb.co/5Gm0PTK/page-bottom-right-bar-hover-tooltips.png" usemap="#page_bottom_right_bar" style="display:none;" alt="coucou" />
<map id="page_bottom_right_bar">
<area id="page_bottom_right_bar_hover_hexes_area" shape="circle" coords="26,132,21" alt="Tooltips choices" href="#tooltips_choices" onmouseover="page_bar_mousehover('tooltips_choices');" onmouseout="page_bar_mouseout()">
<area id="page_bottom_right_bar_hover_tooltips_area" shape="circle" coords="26,177,21" alt="Hexes choices" href="#hexes_choices" onmouseover="page_bar_mousehover('hexes_choices');" onmouseout="page_bar_mouseout();;">
</map>
</div>
你的问题主要是map
元素没有正确应用,必须要有name
属性才能被引用。更详细的可以参考这篇文档:https://developer.mozilla.org/en-US/docs/Web/HTML/Element/map#attributes
在你的例子中,只需要修改<map>
id
属性为name
,或者添加name
属性:
<map name="page_bottom_right_bar">
我想在鼠标悬停时更改图像的一部分。
我已经为图像定义了一个地图,有 2 个区域(圆圈)。
对于第一个,我尝试通过 onmouseover 在该区域上悬停圆圈时更改图像的 src。但它在 Firefox 上闪烁,所以它似乎不起作用。
对于第二个,我让一张图片出现在另一张图片之上。它在 Firefox 上工作正常(除非我用 onmousemove 添加工具提示,然后它也会不停地闪烁)。
这两种情况在 Edge 上似乎都不起作用。它甚至没有进入 page_bar_mousehover(...) 函数。我不明白为什么,因为地图和区域似乎受支持。
如何使这个工作和跨浏览器兼容?
function page_bar_mousehover(item) {
switch (item) {
case "tooltips_choices":
document.getElementById('page_bottom_right_bar').src = "./resources/page_bottom_right_bar_hover_tooltips.png";
break;
case "hexes_choices":
if (document.getElementById('page_bottom_right_bar_hover_hexes_img').style != "") {
document.getElementById('page_bottom_right_bar_hover_hexes_img').style = "";
}
break;
}
}
function page_bar_mouseout() {
document.getElementById('page_bottom_right_bar').src = "https://i.ibb.co/zS1g5jK/page-bottom-right-bar.png";
document.getElementById('page_bottom_right_bar_hover_tooltips_img').style = "display:none;";
document.getElementById('page_bottom_right_bar_hover_hexes_img').style = "display:none;";
}
html {
height:100%;
}
body {
min-height:100%;
background-color: black;
margin: 0;
}
#page_bottom_right_bar_hover_hexes_img, #page_bottom_right_bar_hover_tooltips_img {
position:fixed;
right:0;
bottom:0;
}
<div id="main">
<img id="page_bottom_right_bar" src="https://i.ibb.co/zS1g5jK/page-bottom-right-bar.png" style="position:fixed;right:0;bottom:0;" usemap="#page_bottom_right_bar" />
<img id="page_bottom_right_bar_hover_hexes_img" src="https://i.ibb.co/Dt8b5Vb/page-bottom-right-bar-hover-hexes.png" usemap="#page_bottom_right_bar" style="display:none;" />
<img id="page_bottom_right_bar_hover_tooltips_img" src="https://i.ibb.co/5Gm0PTK/page-bottom-right-bar-hover-tooltips.png" usemap="#page_bottom_right_bar" style="display:none;" alt="coucou" />
<map id="page_bottom_right_bar">
<area id="page_bottom_right_bar_hover_hexes_area" shape="circle" coords="26,132,21" alt="Tooltips choices" href="#tooltips_choices" onmouseover="page_bar_mousehover('tooltips_choices');" onmouseout="page_bar_mouseout()">
<area id="page_bottom_right_bar_hover_tooltips_area" shape="circle" coords="26,177,21" alt="Hexes choices" href="#hexes_choices" onmouseover="page_bar_mousehover('hexes_choices');" onmouseout="page_bar_mouseout();;">
</map>
</div>
你的问题主要是map
元素没有正确应用,必须要有name
属性才能被引用。更详细的可以参考这篇文档:https://developer.mozilla.org/en-US/docs/Web/HTML/Element/map#attributes
在你的例子中,只需要修改<map>
id
属性为name
,或者添加name
属性:
<map name="page_bottom_right_bar">