CSS3渐变渲染问题从透明到白色

pha*_*awk 33 gradient css3

我遇到了CSS3渐变的跨浏览器渲染问题.当我尝试创建从透明颜色到白色的渐变时,会发生这种情况.

我用来测试的文件是:http: //f.cl.ly/items/0E2C062x3O161b09261i/test.html

使用的CSS是:

background-image: linear-gradient(top, rgba(255,255,255,0) 0%, rgba(255,255,255,1) 50%, rgba(255,255,255,1) 100%);
background-image: -o-linear-gradient(top, rgba(255,255,255,0) 0%, rgba(255,255,255,1) 50%, rgba(255,255,255,1) 100%);
background-image: -moz-linear-gradient(top, rgba(255,255,255,0) 0%, rgba(255,255,255,1) 50%, rgba(255,255,255,1) 100%);
background-image: -webkit-linear-gradient(top, rgba(255,255,255,0) 0%, rgba(255,255,255,1) 50%, rgba(255,255,255,1) 100%);
background-image: -ms-linear-gradient(top, rgba(255,255,255,0) 0%, rgba(255,255,255,1) 50%, rgba(255,255,255,1) 100%);
Run Code Online (Sandbox Code Playgroud)

在Safari 6(mac)中,Rending看起来像我想要的: Safari 6 Mac OS 10.8

Chrome渲染在渐变为白色之前淡化为灰色(Firefox在mac os上也呈现这种方式): Chrome 21 Mac OS 10.8

关于为什么这个奇怪的渲染可能是什么想法或建议?

wav*_*ree 60

我也遇到过这种情况.我不确定它为什么会发生,但这是我在自己的项目中用作解决方法的方法:

background-image: -webkit-linear-gradient(top, rgba(255,255,255,0.001) 0%, #fff 5%, #fff 100%);
Run Code Online (Sandbox Code Playgroud)

而不是给Chrome一个"透明"的价值,给它一些非常非常接近透明的东西.希望这可以帮助!

编辑:我忘了发布一个链接到我自己的版本,这在Chrome 21(Windows 7)中按预期呈现.

  • 不幸的是,'透明'仍然无法在Safari中使用,甚至在Safari TP中也无法使用.这是因为'透明'被视为'透明黑'; 指定alpha为0的实际颜色. (9认同)
  • 我相信你实际上可以使用`rgba(255,255,255,0)来获得真正的透明度 - 无论如何它对我有用:) (7认同)
  • 我遇到过这个问题,其中Safari的透明度与我检查的其他浏览器不同.谢谢你的提示! (3认同)

pha*_*awk 23

我在这里粘贴的CSS错了,我正在编辑错误的文件DOH!

原始CSS不起作用

background-image: linear-gradient(top, transparent 0%, #fff 5%, #fff 100%);
background-image: -o-linear-gradient(top, transparent 0%, #fff 5%, #fff 100%);
background-image: -moz-linear-gradient(top, transparent 0%, #fff 5%, #fff 100%);
background-image: -webkit-linear-gradient(top, transparent 0%, #fff 5%, #fff 100%);
background-image: -ms-linear-gradient(top, transparent 0%, #fff 5%, #fff 100%);
Run Code Online (Sandbox Code Playgroud)

修复问题的CSS

background-image: linear-gradient(top, rgba(255,255,255,0) 0%, #fff 5%, #fff 100%);
background-image: -o-linear-gradient(top, rgba(255,255,255,0) 0%, #fff 5%, #fff 100%);
background-image: -moz-linear-gradient(top, rgba(255,255,255,0) 0%, #fff 5%, #fff 100%);
background-image: -webkit-linear-gradient(top, rgba(255,255,255,0) 0%, #fff 5%, #fff 100%);
background-image: -ms-linear-gradient(top, rgba(255,255,255,0) 0%, #fff 5%, #fff 100%);
Run Code Online (Sandbox Code Playgroud)

透明的问题不是颜色,它是黑色的0 alpha,设置为特别白色,0 alpha修复问题.(感谢@carisenda)

这仍然指出浏览器供应商如何处理CSS3渐变中的alpha透明度不一致.


WEB*_*uju 5

除了白色之外的颜色(实际上是白色)的技巧rgba是褪色的实际颜色

background-image: linear-gradient(to right, 
  rgba(111,174,249, 0) 0%,
  rgba(111,174,249, 0) 80%,
  rgb (111,174,249)    100%);
Run Code Online (Sandbox Code Playgroud)

如果使用的颜色是十六进制(如#6faef9),请使用十六进制到 rgba 转换器来转换颜色。