J'ai des problèmes avec le rendu multi-navigateur des dégradés CSS3. Cela se produit lorsque j'essaie de créer un dégradé de couleur transparente au blanc.
Le fichier que j'utilise pour tester est: http://f.cl.ly/items/0E2C062x3O161b09261i/test.html
Le CSS utilisé est:
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%);
Le rendu ressemble à ce que je veux dans Safari 6 (mac):
Le rendu de Chrome passe à la couleur grise avant de se fondre au blanc (Firefox rend également de cette façon sur Mac OS):
Des idées ou des suggestions sur la raison de ce rendu étrange?
Je l'ai également rencontré. Je ne sais pas pourquoi cela se produit, mais voici ce que j'ai utilisé dans mes propres projets comme solution:
background-image: -webkit-linear-gradient(top, rgba(255,255,255,0.001) 0%, #fff 5%, #fff 100%);
Au lieu de donner à Chrome une valeur "transparente", donnez-lui quelque chose de très, très proche de transparent. J'espère que cela vous aidera!
Modifier: j'ai oublié de publier un lien vers le mien version , qui s'affiche comme prévu dans Chrome 21 (Windows 7).
Le CSS que j'ai collé ici était faux, je modifiais le mauvais fichier DOH!
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%);
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%);
Le problème d'être transparent n'est pas une couleur, il est noir avec 0 alpha, le réglage sur spécifiquement blanc avec 0 alpha résout le problème. (merci @carisenda)
Cela souligne toujours des incohérences avec la façon dont les fournisseurs de navigateurs traitent la transparence alpha dans les dégradés CSS3.
L'astuce avec une couleur en plus du blanc (et avec du blanc en fait) est de rgba
la couleur réelle qui s'estompe .
background-image: linear-gradient(to right,
rgba(111,174,249, 0) 0%,
rgba(111,174,249, 0) 80%,
rgb (111,174,249) 100%);
Dans le cas où la couleur utilisée est hexadécimale (comme #6faef9
) utilisez n convertisseur hexadécimal en rgba pour convertir la couleur.