当鼠标悬停在另一个 Div 上时为一个 Div 设置动画

Posted

技术标签:

【中文标题】当鼠标悬停在另一个 Div 上时为一个 Div 设置动画【英文标题】:Animate one Div when the mouse hovers over another 【发布时间】:2012-01-10 23:38:43 【问题描述】:

当鼠标悬停在页面其他地方的另一个 div 标签上时,我希望为一个 div 设置动画。举个例子……

CSS

#blue-box 
position:absolute;
margin-left:50px;
margin-top:50px;
height:100px;
width:100px;
background-color:blue;



#red-box 
position:absolute;
margin-left:180px;
margin-top:50px;
height:100px;
width:100px;
background-color:red;


HTML

<div id="blue-box"></div>
<div id="red-box"></div>

JavaScript

$(document).ready(function()
    $('#red-box').animate('margin-top': '200px', 1500);
);

我还发了jsFiddle 来提供帮助。

当鼠标悬停在蓝色框上时,如何让动画在红色框上触发?并在鼠标移离蓝色框时反转动画?将红色框返回到它的起始位置。

谁能帮帮我?

【问题讨论】:

【参考方案1】:

这应该可以解决问题:


$(document).ready(function()
    $("#blue-box").hover(function()
        $('#red-box').stop().animate('margin-top': '200px', 1500);
    , function()
        $('#red-box').stop().animate('margin-top': '50px', 1500);
    );
);

需要注意的是,如果给定元素的 DOM 顺序,使用 CSS 可以更轻松地完成此操作,但如果我们将 DOM 元素分开,则该解决方案不灵活。

【讨论】:

【参考方案2】:

这也可以在没有 javascript 的情况下完成:

#red-box 
    ...
    transition:margin-top 2s ease-in;


#blue-box:hover + #red-box 
    margin-top:200px;

Demo

【讨论】:

+1 用于提供 CSS3 替代方案。另外,我已对其进行了编辑,因为您两次声明了转换属性。 Flickdraw,您需要使用 -moz- 供应商前缀才能在 Firefox 中工作。这是带有所有供应商前缀的updated demo。 非常好,+1。让多浏览器和旧浏览器 (IE8 + IE7) 友好起来有多容易? 这是最佳答案,以防您要转换的 div 紧跟在触发效果的那个之后。遗憾的是,这个答案不是很灵活,如果 DOM 元素在 DOM 树中混杂一些,那么应该非常注意它的局限性。【参考方案3】:

这是你想要的吗? http://jsfiddle.net/4rnLp/7/

【讨论】:

当我将鼠标悬停在蓝色框上时,这不会为红色框设置动画,至少在 Firefox 中不会。 哦,对不起,我想我把盒子弄乱了,将鼠标悬停在红色盒子上它会为蓝色盒子设置动画。我猜你想要的恰恰相反。

以上是关于当鼠标悬停在另一个 Div 上时为一个 Div 设置动画的主要内容,如果未能解决你的问题,请参考以下文章

在悬停时显示一个 DIV,但在另一个悬停的 DIV 内。使用 CSS

将鼠标悬停在另一个div上显示div

当鼠标悬停在绝对 div 上时,jQuery 禁用滚动

当鼠标悬停在 DIV 上时,如何使某些控件可见并与 DIV 重叠? [关闭]

当鼠标悬停在绝对div上时,jQuery禁用滚动

当悬停另一个 div 时,将悬停状态应用于多个 div