5

只是想知道我怎样才能让这个工作 100% 正确。我想我快到了。

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

我在这个小提琴中有这个半工作。

<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因此我们会不断地循环结束/退出和闪烁的背景。

有任何想法吗?

4

3 回答 3

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.

于 2013-03-30T20:15:13.803 回答
3

而不是检查.company-image元素,您将要检查覆盖。试试下面的。

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

$('.company-image-overlay').on("mouseout", function () {
    $('.company-image-overlay').hide();
});
于 2013-03-30T20:13:54.220 回答
3

If i were you i would use only css. Actually you do not need any kind of functions like show() or hide(). I used an tag for wrapping because some old Internet Explorer versions does know about :hover only on this tag.

You can check the trick here

于 2013-03-30T23:50:05.083 回答