鼠标悬停和鼠标移动时显示隐藏div

时间:2014-03-11 13:32:22

标签: javascript html

<script type="text/javascript">
function show_sidebar()
{
document.getElementById('sidebar').style.visibility="visible";
}

function hide_sidebar()
{
document.getElementById('sidebar').style.visibility="hidden";
}
</script>

<img src="images/cart.jpg" width="80px" height="30px" onMouseOver="show_sidebar()"     onMouseOut="hide_sidebar()">

<div id="sidebar">some thing</div>

这是我在mouseover和mouseout上显示和隐藏侧栏div的代码。它的工作,但我想要的是当我有鼠标悬停在图像上,侧边栏div显示,我希望侧栏div也显示当鼠标在侧边栏上。你怎么能这样做。

7 个答案:

答案 0 :(得分:15)

如果你可以将它们包装在一个共同的父级中,那么只用CSS就可以了,不需要JavaScript。

<强> CSS:

#sidebar {
    display: none;
}
.cart:hover #sidebar {
    display:block;
}

<强> HTML:

<div class="cart">
    <img src="images/cart.jpg" width="80px" height="30px" />
    <div id="sidebar">some thing</div>
</div>

示例:

JSFiddle

可以在不包装的情况下完成,但您必须确保图像和div重叠,以便光标可以移动到div中。包装它避免了这个问题。

另请注意,并非每个人都使用鼠标。

答案 1 :(得分:9)

将事件处理程序移动到包装器div以完成您想要的操作。

<div id="wrapper" onMouseOver="show_sidebar()" onMouseOut="hide_sidebar()">
  <img src="images/cart.jpg" width="80px" height="30px">
  <div id="sidebar">some thing</div>
</div>

答案 2 :(得分:3)

与css一起使用,更简单

 <style>
   #sidebar{
       display : none;
   }
   img:hover ~ #sidebar {
       display : block;
   }
    #sidebar:hover {
       display : block;
   }
</style>
<img src="images/cart.jpg" width="80px" height="30px" >

<div id="sidebar">some thing</div>

延迟:

<style>
#sidebar{

    opacity : 0;
}
img:hover ~ #sidebar {
    opacity : 1;
}
 #sidebar:hover {
    opacity : 1;
}
 #sidebar:not(hover) {
    animation-delay:2s;
    -webkit-animation-delay:2s;
    -webkit-transition: opacity 1s ease-out;
    opacity : 0;
}
</style>

答案 3 :(得分:1)

这是:

http://jsfiddle.net/luckmattos/CV9uX/

使用Jquery

$('#img').hide(); 

$('#sidebar').mouseover(function () {
      $('#img').show();      
});
$('#sidebar').mouseout(function () {
      $('#img').hide();      
});

<强> HTML

<a id="sidebar">Show on Over</a>

<div class="img"><img src="http://www.highsnobiety.com/files/2013/05/lamborghini-egoista-concept-car-9.jpg" width="250px" id="img">
    </div>

答案 4 :(得分:-1)

隐形元素没有鼠标事件。试试这个:

<script type="text/javascript">
function show_sidebar()
{
document.getElementById('sidebar').style.opacity = 1;
}

function hide_sidebar()
{
document.getElementById('sidebar').style.opacity = 0;
}
</script>

<img src="images/cart.jpg" width="80px" height="30px" onMouseOver="show_sidebar()" onMouseOut="hide_sidebar()">
<div id="sidebar" style="opacity: 0;" onMouseOver="show_sidebar()">some thing</div>

答案 5 :(得分:-1)

我认为这是与最新的jquery版本一起使用的最佳且简便的方法。

<script>
$(document).ready(function(){
$("#div2").hide();
$("#div1").mouseover(function(){
$("#div2").fadeIn();
});
$("#div1").mouseout(function(){
$("#div2").fadeOut();
});
});

</script>

<div id="div1">Move the mouse pointer over this paragraph.</div>
<div id="div2" >div2.</div>

答案 6 :(得分:-2)

尝试

<script type="text/javascript">
function show_sidebar()
{
document.getElementById('sidebar').style.display="block";
}

function hide_sidebar()
{
document.getElementById('sidebar').style.display="none";
}
</script>

<img src="images/cart.jpg" width="80px" height="30px" onMouseOver="show_sidebar()"     onMouseOut="hide_sidebar()">

<div id="sidebar">some thing</div>