6
votes

rgba () ne fonctionne pas dans IE8

Je viens de rester avec la manipulation RGBA () en jQuery en utilisant IE 8

jusqu'à présent, j'ai ceci: xxx

Il fonctionne dans tous les autres navigateurs, Don 't sais pourquoi son échec dans IE 8 J'ai reçu cette erreur!

Valeur de la propriété non valide dans jquery.min.js .

Toute aide est grandement appréciée! < / p>

merci


2 commentaires

RGBA ne fonctionnera pas dans IE8 car il est nouveau à CSS. Vous pouvez utiliser un PNG24 qui est légèrement transparent, il fonctionnerait dans IE8


Pour l'avenir: Caniuse.com aide vraiment beaucoup avec cela.


4 Réponses :


10
votes

Réponse simple: IE8 ne prend pas en charge les propriétés RGBA. Il ne connaît que RVB.

Le support RGBA n'a été ajouté que dans IE9.

D'autres vieux navigateurs peuvent également ne pas avoir de soutien pour RGBA. Cependant, il n'y a pas beaucoup de navigateurs que vieux qui sont toujours utilisés autre que IE8.

Il y a des moyens de travailler autour de ceci:

  • Utilisez un polyfill tel que CSS3PIE. Cela vous permettra de spécifier des couleurs de fond RGBA dans votre CSS. Vous ne pourrez toujours pas l'utiliser directement dans le code JS comme vous l'avez, mais vous pouvez changer la classe pour y faire face.

  • Utilisez un outil tel que ModernizR pour détecter si le navigateur prend en charge cette fonctionnalité et fournit une fonctionnalité différente si elle ne le fait pas.

  • Utilisez le style -MS-M Filter pour atteindre l'effet de transparence. Cela vous permet de définir une gamme d'effets spéciaux, y compris l'opacité. Il s'agit d'une fonctionnalité non standard IE, et est remplacée par Standard CSS dans IE9 / 10, mais est toujours utile pour dans certains cas pour les anciennes versions IE.

  • Utilisez une petite image PNG avec un canal alpha comme votre arrière-plan à la place. Un peu de dommage d'utiliser une image d'arrière-plan pour une couleur de couleur unie ces jours-ci, mais cela atteindra le résultat que vous recherchez dans tous les navigateurs.


4 commentaires

Correct. Je me demande. Op pourrait utiliser rgba () et en même temps, c'est-à-dire une alternative pour la propriété gradient? Filtrer: PROGID: DXIMAGETRANSFORM.MICROSOFT.GRADIENT (S TARTCOLORSTR = # VALOR, ENDCOLORSTR = # Valor);


IE8 (échoue), libéré le 19 mars 2009 . FF3 (Travaux), publié 17 juin 2008 . Safari 3 (Travaux), publié 11 juin 2007 . Google Chrome (n'importe quel travail), publié 2 septembre 2008 . ( source )


@Pauls. - Wow, est chrome vraiment que vieux? On ne sent que hier. hmm, maintenant tu as fait moi Vieux :-(


Merci Spudley .. +1 pour l'explication .. Je vais essayer de travailler autour de ces choses que vous avez suggérées.



0
votes

Vous avez une faute de frappe. Il devrait être: xxx pré>

vous manquez la partie "A". P>

Cependant, je ne suis pas sûr que IE8 prend en charge rgba () code> ... Là encore, JQuery a éventuellement une enveloppe pour cela? P>

Pour être sûr, je voudrais définir une image d'arrière-plan au format PNG qui a une transparence. P>

.css({ 'background-image': 'http://example.com/myimage.png' })


0 commentaires

5
votes

`rgba n'est pris en charge par IE8.

Cependant, il existe une truc pour la transparence dans i.e8 xxx

premier 2 chiffres de # 7f000000 < / code> sont opacité et les 6 chiffres suivants sont le code de couleur hexa.

7f est l'équivalent de 50%

de sorte que votre code doit ressembler à: xxx

sources: http://css-tricks.com/rgba-browseer-support/

Modifier: Après Derek Henderson Commentaire, je n'écrirai pas le code, mais si vous souhaitez ajouter cela encore uniquement lorsque c'est IE8, cochez jquery.browser


2 commentaires

Je pense qu'il est préférable d'ajouter les retombées IE8 au besoin que de la spécifier pour tous les navigateurs.


C'est sûr, mais ce n'est pas la question ici ... je ne le montrais simplement qu'il y a une baisse de la transparence dans IE



0
votes

au lieu de ceci:

.css({ 'background-color': 'rgb(0,0,0)', 'opacity': '0.5' }) 


2 commentaires

Que se passera-t-il avec le texte à l'intérieur? C'est une solution si l'élément n'a pas d'enfants ni de texte ni de couleur de bordure.


Non désolé. Bel essai, mais IE8 ne prend également pas en charge CSS opacité . De plus, opacité affectera le premier plan d'élément, alors que le code d'origine rgba n'affectera que l'arrière-plan.