2010-08-09 102 views
2

我在写一个依赖于CSS3渐变背景属性的插件。我没有问题,得到这样的工作:用jQuery设置CSS3渐变属性?


$(this).css({ '-webkit-box-shadow': 'inset 2px 2px 5px #DEDEDE' }); 

然而,这无法工作:


$(this).css({ 'background': '-webkit-gradient(linear,left top,left bottom,from(#f4f4f4),to(#FFFFFF))' }); 

我是的.css()由浏览器所支持的任何财产工作的假设下所以我要么设置它与jQuery错误或此属性不受支持?

回答

4

我怀疑的第一个例子作品之一:如果你想设置的CSS属性,你必须使用两个参数,如$(this).css('background', '-webkit-gradient(linear,left top,left bottom,from(#f4f4f4),to(#FFFFFF))');​​​​​​​

更多关于这个问题:
http://api.jquery.com/css/

编辑
你是对的,可以用{name:value}表示法来设置css属性,他们只是不在函数摘要中告诉它(你必须进一步阅读)。
无论如何,这里有两个参数(第二个从你的帖子)的工作示例:http://jsfiddle.net/BX9Wa/

+1

此外,作品:$(this).css({'background':'-moz-linear-gradient(center bottom ,rgb(255,255,255)0%,rgb(241,250,254)100%)'});' – 2010-08-09 22:25:40

+0

也可以:$(this).css({'filter':'progid:DXImageTransform.Microsoft.gradient(startColorstr =#4cdbff ,'endcolorstr =#f4f4f4,endColorstr =#FFFFFF)\“endcolorstr =#FFFFFF)'})'AND' $(this).css({'-ms-filter':'\”progid:DXImageTransform.Microsoft.gradient(startColorstr =#f4f4f4, '})'。大声笑。 – 2010-08-09 22:31:10

+0

这很烦人。从这个混乱中,似乎你不能将'.css({'someProp':'someSetting'})'与'.css('someProp','someSetting')'混合在一起。唯一不适用于前者的是webkit渐变。即使是IE滤镜渐变也适用于这种语法!除非我再次搞砸了,否则我唯一的解决方法是将大量'.css('someProp','someSetting')'链接在一起,或者不能使用webkit渐变。 – 2010-08-09 22:47:15