IE9 est apparemment capable de gérer les coins arrondis en utilisant la définition standard CSS3 de border-radius
.
Qu'en est-il de la prise en charge du rayon de bordure et du dégradé d'arrière - plan? Oui, IE9 doit les supporter tous les deux séparément, mais si vous mélangez les deux, le dégradé saigne du coin arrondi.
Je vois aussi de l'étrangeté avec des ombres apparaissant comme une ligne noire solide sous une boîte aux coins arrondis.
Voici les images présentées dans IE9:
Comment contourner ce problème?
internet-explorer-9
gradient
compass-sass
css
SigmaBetaTooth
la source
la source
Réponses:
Voici une solution qui ajoute un dégradé d'arrière-plan, en utilisant un URI de données pour créer une image semi-transparente qui recouvre n'importe quelle couleur d'arrière-plan. J'ai vérifié qu'il était correctement coupé au rayon de la bordure dans IE9. C'est plus léger que les propositions basées sur SVG, mais en tant qu'inconvénient, il n'est pas indépendant de la résolution. Autre avantage: fonctionne avec votre HTML / CSS actuel et ne nécessite pas d'encapsulation avec des éléments supplémentaires.
J'ai saisi un PNG dégradé aléatoire de 20x20 via une recherche sur le Web et l'ai converti en URI de données à l'aide d'un outil en ligne. L'URI de données qui en résulte est plus petit que le code CSS pour tout ce désordre SVG, et encore moins le SVG lui-même! (Vous pouvez appliquer cette condition à IE9 uniquement en utilisant des styles conditionnels, des classes css spécifiques au navigateur, etc.) Bien sûr, la génération d'un PNG fonctionne très bien pour les dégradés de la taille d'un bouton, mais pas pour les dégradés de la taille d'une page!
HTML:
CSS:
la source
background-size: 100% 103%; background-position:center;
est meilleur. 100% pour les deux valeurs ajoute une bordure étrange en haut et en bas.J'ai également travaillé avec ce problème. Une autre "solution" consiste à ajouter un div autour de l'élément qui a le dégradé et les coins arrondis. Donnez à ce div les mêmes valeurs de hauteur, de largeur et de coin arrondi. Définissez le débordement sur masqué. Ceci est fondamentalement juste un masque, mais cela fonctionne pour moi.
HTML:
CSS:
la source
Je pense qu'il vaut la peine de mentionner que dans de nombreux cas, vous pouvez utiliser une boîte-ombre en médaillon pour "simuler" l'effet de dégradé et éviter les bords laids dans IE9. Cela fonctionne particulièrement bien avec les boutons.
Voir cet exemple: http://jsfiddle.net/jancbeck/CJPPW/31/
la source
box-shadow: inset 0 -8px 10px rgba(0,0,0,0.15), 0 1px 0 rgba(255,255,255, 0.3), inset 0 1px 0 rgba(255,255,255, 0.3);
Vous pouvez également utiliser CSS3 PIE pour résoudre ce problème:
http://css3pie.com/
Bien sûr, cela peut être exagéré si vous ne dépendez que d'un seul élément avec des coins arrondis et un dégradé d'arrière-plan, mais c'est une option à considérer si vous incorporez un certain nombre de fonctionnalités CSS3 communes sur vos pages et que vous souhaitez un support facile. pour IE6 +
la source
J'ai aussi rencontré ce bug. Ma suggestion serait d'utiliser une image d'arrière-plan répétée pour le dégradé dans ie9. IE9 mosaïque correctement l'image derrière les bordures arrondies (à partir de RC1).
Je ne vois pas comment écrire 100 lignes de code pour remplacer 1 ligne de CSS est simple ou élégant. SVG est cool et tout, mais pourquoi passer par tout cela alors que des solutions plus simples pour les arrière-plans dégradés existent depuis des années.
la source
Je suis également resté coincé dans le même problème n j'ai constaté qu'IE ne pouvait pas rendre le rayon et le dégradé de la bordure à la fois, les deux conflits, le seul moyen de résoudre ce mal de tête est de supprimer le filtre et d'utiliser le dégradé via le code svg, juste pour IE ..
vous pouvez obtenir le code svg en utilisant leur code de couleur dégradé, à partir de ce site Microsoft (spécialement conçu pour le dégradé en svg):
http://ie.microsoft.com/testdrive/graphics/svggradientbackgroundmaker/default.html
prendre plaisir :)
la source
Utilisez simplement un div wrapper (arrondi et trop-plein caché) pour découper le rayon pour IE9. Simple, fonctionne avec plusieurs navigateurs. SVG, JS et les commentaires conditionnels ne sont pas nécessaires.
la source
Cette publication de blog m'a aidé: http://abouthalf.com/2010/10/25/internet-explorer-9-gradients-with-rounded-corners/
Fondamentalement, vous utilisez un commentaire conditionnel pour supprimer le filtre, puis créez des «sprites» SVG de dégradés que vous pouvez utiliser comme images d'arrière-plan.
Simple et élégant!
la source
url()
appels d' images CSS . Il ne reste plus qu'un seul, alors laissez tomber les 1000 conditionnels et servez SVG pour le bg sur tout ce qui le supporte. Pour tout le monde, diffusez une image tramée. Ensuite, ce hack devient gérable.IE9 gère correctement le rayon de la bordure et les dégradés. Le problème est que IE9 rend le filtre correct en plus du gradient. La façon de résoudre correctement ce problème consiste à désactiver les filtres sur les déclarations de style qui utilisent la propriété filter.
À titre d'exemple sur la meilleure façon de résoudre ce problème:
Vous avez une classe de boutons dans votre feuille de style principale.
Dans une feuille de style IE9 conditionnelle:
Tant que la feuille de style IE9 est référencée dans votre tête après votre feuille de style principale, cela fonctionnera parfaitement.
la source
Il existe un moyen simple de le faire fonctionner sous IE9 avec un seul élément.
Jetez un œil à ce violon: http://jsfiddle.net/bhaBJ/6/
Le premier élément définit le Border-Radius. Le deuxième pseudo-élément définit le dégradé d'arrière-plan.
Quelques instructions clés:
La déclaration de l'élément de base ressemble à quelque chose comme:
Déclaration de pseudo-élément:
la source
J'ai décidé de désactiver IE9 des coins arrondis pour contourner ce bogue. C'est propre, facile et générique utilisable.
la source
Le masque div dans IE9 est une bonne idée. Je fournis un code complet pour aider à clarifier un peu. Bien que je ne sois pas satisfait d'envelopper le bouton dans un DIV, je pense que c'est plus facile à comprendre que d'incorporer un masque PNG ou de passer par tous les efforts en utilisant SVG. Peut-être que IE 10 le supportera correctement.
la source
Je faisais cela pour moi et une fois que j'ai enlevé la ligne "filter:", le saignement a disparu. De plus, j'utilise PIE.
Saignements:
Ne saigne pas:
Correction rapide des ombres d'IE:
}
la source
Vous pourriez utiliser l' ombre pour obtenir un dégradé et vous allez travailler sur Internet Explorer 9 avec
border-radius
Quelque chose comme ça:
la source
Je ne sais pas s'il s'agissait d'une solution unique ou valide, mais ...
J'ai trouvé que si le rayon de la bordure est supérieur à la largeur de la bordure, je n'ai pas rencontré le problème. Quand ils étaient identiques, j'obtenais les coins carrés.
la source
En utilisant la boussole et le sass, vous pouvez facilement y parvenir comme suit:
Compass générera une image SVG pour vous.
ainsi:
}
}
la source
Travaille pour moi...
css
la source