IE9 aparentemente puede manejar esquinas redondeadas mediante el uso de la definición estándar CSS3 de border-radius
.
¿Qué pasa con la compatibilidad con el radio del borde y el gradiente de fondo? Sí, IE9 es para admitirlos a ambos por separado, pero si mezcla los dos, el degradado se desangra por la esquina redondeada.
También veo extrañeza con sombras que se muestran como una línea negra sólida debajo de una caja con esquinas redondeadas.
Aquí están las imágenes que se muestran en IE9:
¿Cómo puedo solucionar este problema?
internet-explorer-9
gradient
compass-sass
css
SigmaBetaDiente
fuente
fuente
Respuestas:
Aquí hay una solución que agrega un gradiente de fondo, utilizando un URI de datos para crear una imagen semitransparente que se superpone a cualquier color de fondo. He verificado que está recortado correctamente al radio del borde en IE9. Esto es más liviano que las propuestas basadas en SVG pero, como inconveniente, no es independiente de la resolución. Otra ventaja: funciona con su HTML / CSS actual y no requiere ajuste con elementos adicionales.
Tomé un PNG aleatorio de gradiente de 20x20 a través de una búsqueda en la web y lo convertí en un URI de datos usando una herramienta en línea. El URI de datos resultante es más pequeño que el código CSS para todo ese desorden SVG, ¡mucho menos el propio SVG! (Puede aplicar esto condicionalmente a IE9 solo usando estilos condicionales, clases de CSS específicas del navegador, etc.) ¡Por supuesto, generar un PNG funciona muy bien para gradientes de tamaño de botón, pero no para gradientes de tamaño de página!
HTML:
CSS:
fuente
background-size: 100% 103%; background-position:center;
es mejor. 100% para ambos valores agrega un borde extraño en la parte superior e inferior.También he estado trabajando con este problema. Otra "solución" es agregar un div alrededor del elemento que tiene el gradiente y las esquinas redondeadas. Haga que el div tenga los mismos valores de altura, ancho y esquinas redondeadas. Establezca el desbordamiento en oculto. Esto es básicamente una máscara, pero funciona para mí.
HTML:
CSS:
fuente
Creo que vale la pena mencionar que, en muchos casos, puede usar una sombra de recuadro para "simular" el efecto de degradado y evitar los bordes feos en IE9. Esto funciona especialmente bien con botones.
Vea este ejemplo: http://jsfiddle.net/jancbeck/CJPPW/31/
fuente
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);
También puede usar CSS3 PIE para resolver este problema:
http://css3pie.com/
Por supuesto, eso podría ser excesivo si solo depende de un solo elemento con esquinas redondeadas y un degradado de fondo, pero es una opción a tener en cuenta si está incorporando una serie de características CSS3 comunes en sus páginas y desea un soporte sencillo para IE6 +
fuente
Me encontré con este error también. Mi sugerencia sería usar una imagen de fondo repetida para el gradiente en ie9. IE9 coloca correctamente la imagen en mosaico detrás de los bordes redondeados (a partir de RC1).
No veo cómo escribir 100 líneas de código para reemplazar 1 línea de CSS es simple o elegante. SVG es genial y todo, pero ¿por qué pasar por todo eso cuando las soluciones más fáciles para fondos degradados han existido durante años?
fuente
También me quedé atrapado en el mismo problema y descubrí que IE no puede representar el radio del borde y el gradiente a la vez, ambos conflictos, la única forma de resolver este dolor de cabeza es eliminar el filtro y usar el gradiente a través del código svg, solo para IE ..
puede obtener el código svg utilizando su código de color degradado, de Microsoft este sitio (especialmente hecho para degradado a svg):
http://ie.microsoft.com/testdrive/graphics/svggradientbackgroundmaker/default.html
disfruta :)
fuente
Simplemente use un contenedor wrap div (redondeado y desbordamiento oculto) para recortar el radio para IE9. Simple, funciona entre navegadores. SVG, JS y comentarios condicionales son innecesarios.
fuente
Esta publicación de blog me ayudó: http://abouthalf.com/2010/10/25/internet-explorer-9-gradients-with-itated-corners/
Básicamente, usa un comentario condicional para eliminar el filtro y luego crea 'sprites' SVG de gradientes que puede usar como imágenes de fondo.
Simple y elegante!
fuente
url()
llamadas de imagen CSS . Solo queda un remanente, por lo tanto, elimine los 1000 condicionales y sirva SVG para el bg en todos los que lo respaldan. Para todos los demás, sirva una imagen rasterizada. Entonces este truco se vuelve manejable.IE9 maneja el radio del borde y los gradientes juntos correctamente. El problema es que IE9 hace que el filtro sea adecuado además de del gradiente. La forma de resolver esto correctamente es deshabilitar los filtros en las declaraciones de estilo que utilizan la propiedad de filtro.
Como ejemplo de cómo resolver esto mejor:
Tienes una clase de botón en tu hoja de estilo principal.
En una hoja de estilo condicional IE9:
Siempre que se haga referencia a la hoja de estilo IE9 en su cabeza después de su hoja de estilo principal, esto funcionará perfectamente.
fuente
Hay una manera simple de hacerlo funcionar bajo IE9 con solo UN elemento.
Echa un vistazo a este violín: http://jsfiddle.net/bhaBJ/6/
El primer elemento establece el radio del borde. El segundo pseudo-elemento establece el gradiente de fondo.
Pocas instrucciones clave:
La declaración del elemento base es algo así como:
Declaración de pseudoelemento:
fuente
Decidí deshabilitar IE9 de las esquinas redondeadas para solucionar este error. Es limpio, fácil y genérico utilizable.
fuente
La máscara div en IE9 es una buena idea. Estoy proporcionando un código completo para ayudar a aclarar un poco. Si bien no estoy contento con envolver el botón en un DIV, creo que es más fácil de entender que incrustar una máscara PNG o hacer todo el esfuerzo con SVG. Tal vez IE 10 lo admitirá correctamente.
fuente
Me estaba haciendo esto y una vez que quité la línea "filtro:" el sangrado desapareció. Además yo uso pastel.
Sangrados
No sangra
Solución rápida de IE Shadow:
}
fuente
Podría usar shadow para lograr un gradiente, y funcionará en Internet Explorer 9 con
border-radius
Algo como esto:
fuente
No estoy seguro de si se trataba de una solución única o válida, pero ...
Descubrí que siempre que el radio del borde sea mayor que el ancho del borde, no encontré el problema. Cuando eran lo mismo, obtenía las esquinas cuadradas.
fuente
Usando brújula y sass puedes lograr esto fácilmente así:
Brújula generará una imagen SVG para usted.
al igual que:
}
}
fuente
Funciona para mi...
css
fuente