jquery在悬停时淡入背景颜色属性?

Posted

技术标签:

【中文标题】jquery在悬停时淡入背景颜色属性?【英文标题】:jquery fading in background color property on hover? 【发布时间】:2012-01-27 13:59:47 【问题描述】:

我有一小段代码不工作,看看:

$(document).ready(function() 
    $('ul#mainmenu li:hover').css(backgroundColor:'');
    $('ul#mainmenu li').hover(function() 
        $(this).animate(backgroundColor:'#2E8AE5', slow);
    );
);

它的意思是:

1) 在 ID 为 mainmenu 的无序列表中,从具有伪类 :hover 的列表项中取消设置 CSS 属性 background-color(这样那些没有启用 javascript 的人仍然可以体验到与我类似的效果'正在尝试用 jQuery 来实现)

2) 当相同的列表项被悬停在上面时,它应该以所述列表项的背景色进行动画处理。

但事实并非如此。相反,第一个任务甚至都没有完成,更不用说在悬停时在后台制作动画了。值得注意的是,我已经三次检查了我的元素(我什至将它们复制并粘贴到脚本中以确保)。

我正在使用 jQuery UI——据我所知,它可以执行涉及为某些 CSS 属性设置动画的任务。想法?

【问题讨论】:

【参考方案1】:

作为mentioned before ...使用颜色插件

http://jsfiddle.net/Mb6Nd/

$(document).ready(function() 
    var lis = $('#mainmenu > li');
    $(lis).hover(
        function() 
            $(this).animate(backgroundColor:'#2E8AE5', 'slow');
        ,
        function()
            $(this).animate(backgroundColor:'#cecece', 'fast');
        
    );
);

【讨论】:

效果很好,除了我的起始颜色是透明的,而且这不适用于透明的起始颜色,而且它会影响子元素(子菜单) - 真的,这不是什么我在找。【参考方案2】:

将您的目标 id 更改为 #mainmenu > li 将使其仅影响父级 li 而不会影响子级 li。也可以试试 backgroundColor: 'transparent !important'

试试这个:

$(document).ready(function() 
    var $lis=$('#mainmenu > li');
    $lis.css(backgroundColor:'transparent !important');
    $lis.hover(function() 
       $(this).animate(backgroundColor:'#2E8AE5', 'slow');
    );
);

【讨论】:

【参考方案3】:

编辑

它应该是“背景色”。不是背景颜色。即

$(this).animate('background-color':'#2E8AE5', "slow");

速度参数应该是字符串或数字。例如:“慢”或 10000(毫秒)。

例如:

$(this).animate(backgroundColor:'#2E8AE5', "slow");

$(this).animate(backgroundColor:'#2E8AE5', 1000); // in millisecs

【讨论】:

啊,已经很晚了 - 我应该把它捡起来,但它并不能解决我的问题。 backgroundColor 是 jQuery 中的一个有效 CSS 属性,正如 Tim 的回答所证明的那样,遗憾的是,这并不能解决我的问题。【参考方案4】:

这行得通吗?:

$(document).ready(function() 
    var $lis=$('#mainmenu li');
    $lis.css(backgroundColor:'#aaa');
    $lis.hover(function() 
       $(this).animate(backgroundColor:'#2E8AE5', 'slow');
    );
);

【讨论】:

实际上,我只是将第一个背景颜色设置为 #AAA 而不是空白,然后重试了它! :D 但是有什么方法可以让我最初将background-color 设置为空,因为必须将其设置为预设颜色会破坏鼠标悬停之前的外观?干杯。 此外,它也会影响此菜单中的子菜单。有没有办法将动画仅应用于该特定元素,而不是继承它的子元素? @Antilogical13 你可以使用background-color:inherit;【参考方案5】:

我认为使用color animation jQuery plugin之类的插件淡化背景色、前景色和边框颜色是最好的解决方案,

使用:

(去掉反斜杠).

然后输入之前的代码。喜欢。

$('#demodiv').animate(backgroundColor: '#400101');

更多参考click here

【讨论】:

以上是关于jquery在悬停时淡入背景颜色属性?的主要内容,如果未能解决你的问题,请参考以下文章

jQuery - 具有悬停效果的多个项目

设置/覆盖背景颜色时的 jQuery / CSS 优先级

在悬停时使用 JQuery 更改背景颜色

悬停时背景颜色变化不起作用(jquery)

jQuery:悬停链接时在div中动画(淡化)背景颜色或图像?

jQuery通过淡入淡出改变背景颜色并延迟返回原始颜色