JQuery鼠标悬停图像叠加

时间:2013-03-30 20:11:19

标签: jquery image html overlay

只是想知道我如何能够100%正确地完成这项工作。我想我快到了。

基本上,我有一个图像&当我鼠标悬停时,我想要一个叠加层(这是一个彩色的div)出现在顶部。

我在这个fiddle中进行了半工作。

<img src="http://mirrorchecker.com/images/rod_160.png" width="160"
class="company-image"/>
<div class="company-image-overlay"></div>

/* CSS */
.company-image
{
}
.company-image-overlay
{
width: 160px;
height: 160px;
background-color: #ffb00f;
z-index: 1;
opacity: 0.5;
    position: fixed;
    top: 0.5em;
    display:none;
}

/* JQUERY */
$('.company-image').mouseover(function()
     {
        $('.company-image-overlay').show();
     });
$('.company-image').mouseout(function()
     {
       $('.company-image-overlay').hide();
     });

问题似乎是当叠加层出现时,鼠标在技术上不再超过.company-image,因此我们可以获得持续的过度/自然循环和闪烁的背景。

有什么想法吗?

3 个答案:

答案 0 :(得分:6)

最简单的解决方案是为两个元素添加包装元素:

<div class="wrap">
    <img src="http://mirrorchecker.com/images/rod_160.png" width="160" class="company-image" />
    <div class="company-image-overlay"></div>
</div>

并将mouseover / mouseout方法放到那个元素中:

$('.wrap').mouseover(function () {
    $('.company-image-overlay').show();
}).mouseout(function () {
    $('.company-image-overlay').hide();
});

JS Fiddle demo

答案 1 :(得分:3)

您不想检查.company-image元素,而是要检查叠加层。请尝试以下方法。

$('.company-image').on("mouseover", function () {
    $('.company-image-overlay').show();
});

$('.company-image-overlay').on("mouseout", function () {
    $('.company-image-overlay').hide();
});

答案 2 :(得分:3)

如果我是你,我会只使用CSS。实际上,您不需要任何类型的功能,例如show()hide()。我使用了一个标记进行包装,因为一些旧的Internet Explorer版本仅在此标记上知道:hover

您可以查看技巧here