jQuery 动画透明

发布于 2024-09-18 10:35:14 字数 323 浏览 6 评论 0原文

$(".block li").hover(
    function(){
        $(this).animate({backgroundColor: "#000"});
    },
    function(){
        $(this).animate({backgroundColor: "#fff"});
    }
);

需要将#fff更改为无颜色。动画应从 #000transparent 发生。

有什么解决办法吗?

$(".block li").hover(
    function(){
        $(this).animate({backgroundColor: "#000"});
    },
    function(){
        $(this).animate({backgroundColor: "#fff"});
    }
);

Need to change #fff to no color. Animation should occur from #000 to transparent.

Any solution?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(9

残花月 2024-09-25 10:35:14

您可以使用 rgba(...)在此处查看浏览器支持)。

var elem = $('#foo')[0];

$({
    r: 0,
    g: 0,
    b: 0,
    a: 1
}).animate({
    a: 0
}, {
    step: function() {
        elem.style.backgroundColor =
            'rgba(' +
                ~~this.r + ',' + ~~this.g + ',' + ~~this.b + ',' +
                ~~(this.a*100)/100 +
            ')';
    },
    duration: 1000
});​

~~ 是底值,否则你最终会得到像 rgba(0.1029302... 这样的东西。

You could use rgba(...) (see browser support here).

var elem = $('#foo')[0];

$({
    r: 0,
    g: 0,
    b: 0,
    a: 1
}).animate({
    a: 0
}, {
    step: function() {
        elem.style.backgroundColor =
            'rgba(' +
                ~~this.r + ',' + ~~this.g + ',' + ~~this.b + ',' +
                ~~(this.a*100)/100 +
            ')';
    },
    duration: 1000
});​

~~ is to floor values, otherwise you'll end up with stuff like rgba(0.1029302....

白衬杉格子梦 2024-09-25 10:35:14

不要更改背景颜色,而是删除该属性!

代码很简单:

$("li").hover(
    function(){
        $(this).toggleClass('hover', 1000);
    },
    function(){
        $(this).toggleClass('hover', 2000);
    }
);

示例: http ://jsfiddle.net/rdWTE/

为了让它工作,你需要 jQuery 和 jQuery UI。完全符合您的要求(除了颜色)!

jQuery 脚本中的这些数字代表动画持续时间(以毫秒为单位)。

编辑:

嗯...发现 toggleClass 有时会出现错误。最好在悬停时使用 addClass ,在鼠标移出时使用 removeClass

Instead of changing background color, remove that attribute!

The code is as simple as:

$("li").hover(
    function(){
        $(this).toggleClass('hover', 1000);
    },
    function(){
        $(this).toggleClass('hover', 2000);
    }
);

Example: http://jsfiddle.net/rdWTE/

For it to work, you need jQuery and jQuery UI. Does exactly what you wanted (except the colors)!

Those numbers in jQuery script stand for animation duration in milliseconds.

EDIT:

Uhm... Found out that toggleClass can bug from time to time. Better to use addClass on hover, and removeClass on mouse out.

唠甜嗑 2024-09-25 10:35:14

编辑:我已经测试过这个并且它有效。

创建两个类。一张带背景:#000,一张带背景:透明;

为#000背景类的toggleClass或removeClass设置动画。

示例:

jQuery('.block li').hover(function() {
  $(this).toggleClass('blackClass', 'fast' );
}

CSS:

.blackClass { background: #000; }

Edit: I have tested this and it works.

Create two classes. One with background: #000 and one with background: transparent;

Animate the toggleClass or removeClass for the #000 background class.

example:

jQuery('.block li').hover(function() {
  $(this).toggleClass('blackClass', 'fast' );
}

CSS:

.blackClass { background: #000; }
狂之美人 2024-09-25 10:35:14

这可能有效。它在 onMouseOver 上添加一个带有背景颜色的新 div,然后淡出并删除 onMouseOut 上的 div。

示例。

在图像上列出项目的示例。

祝你好运,希望这会有所帮助。

This might work. It prepends a new div with a background color onMouseOver, then it fades out and removes the div onMouseOut.

Example.

Example with list items over an image.

Good luck, hope this helps.

一抹苦笑 2024-09-25 10:35:14

为什么不使用不透明度 CSS3 标签?

Why not use the opacity CSS3 tag?

空心↖ 2024-09-25 10:35:14

我认为您需要使用 颜色插件

I think you need to use the color plugin.

卸妝后依然美 2024-09-25 10:35:14

这可能需要对您的 HTML 和 CSS 进行一些更改(如果您没有直接的 HTML/CSS 控制,则可能会受到脚本的影响)。

我会将每个“.block li”元素拆分为两个元素:一个是可以使用 $.fadeTo() 进行动画处理的背景元素,另一个元素位于顶部,其中包含前景内容,您可以在其上使用您的处理程序调用 $.hover() 。

This may require some change to your HTML and CSS (which could be effected by script if you don't have direct HTML/CSS control).

I would split each '.block li' element into two elements: one that will be the background element that can be animated with $.fadeTo(), and another element laid over the top that will contain your foreground content and on which you can call $.hover() with your handlers.

雨的味道风的声音 2024-09-25 10:35:14

$(".block li").hover(
功能(){
$(this).animate({backgroundColor: "#000"});
},
功能(){
$(this).animate({backgroundColor: $(this).parent().css("backgroundColor") });
}
);

$(".block li").hover(
function(){
$(this).animate({backgroundColor: "#000"});
},
function(){
$(this).animate({backgroundColor: $(this).parent().css("backgroundColor") });
}
);

想念有你 2024-09-25 10:35:14

我从以下位置找到了此问题的解决方案这个链接

$('#test').animate({

backgroundColor: "#DFC21D",

}, 1000, function() {

$('#test').css("backgroundColor","transparent");

});

I got a solution to this issue from this link

$('#test').animate({

backgroundColor: "#DFC21D",

}, 1000, function() {

$('#test').css("backgroundColor","transparent");

});
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文