div上的onMouseOver

时间:2014-04-22 22:41:19

标签: html hover onmouseover

因此,当鼠标悬停在div上时,我正试图让onMouseOver替换图像,不幸的是,因为我现在只有当鼠标直接在图像上而不是div时它才会替换图像,有没有办法让这个工作?

我应该使用CSS来放置图像,而是在悬停时替换图像吗?

<div class="link">
     <a href="link.html">
          <img src="img.png" onMouseOver="this.src='hoverimg.png'" onMouseOut="img.png'"
          <div class="title">Title</div>
     </a>
</div>

3 个答案:

答案 0 :(得分:2)

我更喜欢使用CSS:

<div class="image-hover">
    Some title
</div>

.image-hover { background: url(...);}
.image-hover:hover { background: url(...);}

答案 1 :(得分:0)

这可以通过CSS和背景图像来实现。您也不应该在内联元素(a)中使用块级元素(div)。我把它交换了一段时间。例如:

<style type="text/css">
.link a {
    display:inline-block;
    background: url('img.png') top left no-repeat;
    width:(imagewidth)px;
    padding-top:(imageheight)px;
}
.link a:hover {
    background: url('hoverimg.png') top left no-repeat;
}
</style>

<div class="link">
     <a href="link.html">
          <span class="title">Title</span>
     </a>
</div>

完全优化将两个图像组合成所谓的精灵并使用背景位置。

答案 2 :(得分:0)

您可以使用CSS或jQuery执行此操作。大多数人会建议您使用CSS,因为它更容易调试:

如果您希望在将鼠标悬停在div上时更改图像,可以将:悬停状态应用于div:

.link img{
    background: url("image1.png");
}

.link:hover img
{
    background: url("image2.png");
}

但是您应该注意,这基本上将img视为内联块元素,并且不会更改src属性。


jQuery将允许您更改源代码,但如果出现问题则必须进行调试,如果JS被禁用,则无法运行。

$(".link").hover(function(){
    $(this).find("img").attr("src", "image2.png");
}).mouseout(function(){
    $(this).find("img").attr("src", "image1.png");
});

JSFiddle