jQuery不透明度跨浏览器兼容性?

13

这行代码 jQuery('#selector').css({'opacity':50}); 能在所有浏览器中使用吗?

我问这个问题只是因为通常我们会用下面的 CSS 代码:

-moz-opacity:.50; filter:alpha(opacity=50); opacity:.50;

3个回答

26

这样可能更好:

$(element).fadeTo(0, 0.5);

css({opacity:50}) 不总是有效的,至少在 Chrome 上不行,但 fadeTo 很好用 :) - Val
这并不完全相同,因为它不仅以跨浏览器的方式设置不透明度,而且还进行动画处理。在CSS3时代,由于CSS转换效果,这可能不是所期望的。 - Robert Koritnik
2
@RobertKoritnik,在发表这样的言论之前,请先检查API;这里的第一个参数意味着没有动画。此外,我不确定与过渡的联系是什么;没有人要求过渡。此外,这显然是在一年多以前发布的,即使如此,考虑到某些市场无法使用CSS3,我也不确定CSS3的年龄。 - davin
第一个参数确实是0,但在声称这意味着没有动画之前,您应该检查jQuery代码并查看如果将“speed”参数设置为0会执行多少代码。但是,您对于这个问题的年龄和与CSS3转换无关的事实是正确的。我收回那句话。 - Robert Koritnik
@RobertKoritnik,你是对的,确实有开销,但这并不意味着有动画;它们是两个不同的概念。无论如何,在CPU时间上来说,那么多的代码量是可以忽略不计的。 - davin
谢谢Davin,这是非常有用的评论!比通过.css()设置不透明度要好得多!谢谢! - Sebastian

4

是的,它设置了CSS不透明度或IE的不透明度滤镜。


0

因为jQuery是考虑到跨浏览器兼容性而设计的,只要浏览器支持CSS不透明度标签,那么您的jQuery代码就是跨浏览器的。(您已经尝试过了吗?您可以前往jsfiddle.net查看是否是这样。)

更多信息,请参阅W3Schools关于不透明度的页面。使用各种浏览器前往该页面并查看其是否有效。(在我看来,它在所有三个主要浏览器中都有效。)


4
嗨,我知道这是一篇旧帖子,但我想补充一下,请不要相信或引用W3Schools网站。请参阅:http://w3fools.com/ - daiscog
2
100%正确,@daiscog。我年轻又愚蠢。(我现在屏蔽W3School的结果。)事实上,是SO纠正了我的错误。我现在更聪明了。;) - JasCav

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接