IE9 bordo-raggio e sanguinamento gradiente di sfondo


191

Apparentemente IE9 è in grado di gestire gli angoli arrotondati usando la definizione standard CSS3 di border-radius.

Che dire del supporto per il raggio del bordo e il gradiente di sfondo? Sì, IE9 è di supportarli entrambi separatamente, ma se si mescolano i due il gradiente sanguina fuori dall'angolo arrotondato.

Vedo anche la stranezza con le ombre mostrate come una solida linea nera sotto una scatola con angoli arrotondati.

Ecco le immagini mostrate in IE9:

immagine senza al vivo, ma angoli nitidi immagine con sanguinamento

Come posso aggirare questo problema?


Grazie per i suggerimenti @MikeP e @meanstreakuk. Immagino che la risposta che sto cercando sia più sulla falsariga di quando IE supporterà veramente gradienti / arrotondamenti o come faccio a far lavorare insieme i due.
SigmaBeta, il

Hai la risposta di @meanstreak su come far lavorare insieme i 2. Se vuoi essere realistico, i gradienti SVG come immagini di sfondo hanno molte più probabilità di essere pienamente supportati da tutti i browser molto prima dei gradienti CSS (che sono ancora in fase di sviluppo / discussione).
Kevin Peno,

29
La SM incredibile è molto indietro. È il 2011 e IE sta ancora affrontando questo tipo di problemi. zzzzzzz. .. sul loro sito dicono: "il digiuno ora è bello". Certo che lo e. Dai un'occhiata alle foto pubblicate sopra. CHE BELLEZZA RETTANGOLARE!
SunnyRed

SunnyRed, beh, in elementi cromati contenuti in qualcosa con angoli arrotondati sanguina sopra gli angoli. Davvero, è il 2012 e i browser stanno ancora affrontando questo tipo di problemi :-)
Joey,

2
@SunnyRed It 2013 ora e il bug è ancora lì :(
Sliq

Risposte:


49

Ecco una soluzione che aggiunge un gradiente di sfondo, usando un URI di dati per creare un'immagine semi-trasparente che si sovrappone a qualsiasi colore di sfondo. Ho verificato che sia tagliato correttamente al raggio del bordo in IE9. Questo è più leggero rispetto alle proposte basate su SVG ma, come inconveniente, non è indipendente dalla risoluzione. Un altro vantaggio: funziona con il tuo attuale HTML / CSS e non richiede il wrapping con elementi aggiuntivi.

Ho acquisito un PNG gradiente 20x20 casuale tramite una ricerca Web e l'ho convertito in un URI di dati utilizzando uno strumento online. L'URI dei dati risultante è più piccolo del codice CSS per tutto quel casino SVG, tanto meno lo stesso SVG! (Puoi applicarlo in modo condizionale a IE9 solo usando stili condizionali, classi css specifiche del browser, ecc.) Naturalmente, la generazione di un PNG funziona benissimo per i gradienti di dimensioni pulsante, ma non per gradienti di pagina!

HTML:

<span class="button">This is a button</span>

CSS:

span.button { 
  padding: 5px 10px;
  border-radius: 10px;
  background-color: orange;  
  background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAvUlEQVQ4y63VMQrDMAyF4d/BGJ+rhA4dOnTo0Kn3P4ExxnSoXVQhpx0kEMmSjyfiKAF4AhVoqrvqjXdtoqPoBMQAPAZwhMpaYkAKwH1gFtgG0v9IlyZ4E2BVabtKeZhuglegKKyqsWXFVboJXgZQfqSUCZOFATkAZwEVY/ymQAtKQJ4Jd4VZqARnuqyxmXAfiAQtFJEuG9dPwtMC0zD6YXH/ldAddB/Z/aW4Hxv3g+3+6bkvB/f15b5gXX8BL0z+tEEtuNA8AAAAAElFTkSuQmCC);
  background-size: 100% 100%;

  border: 2px solid white;
  color: white;
}

1
E il vincitore è ... Immagino che se devo sceglierne uno, questo è tutto. Speravo di vedere più informazioni per quando IE avrebbe effettivamente supportato ciò che sostiene che supporta. Per quanto riguarda la soluzione per l'immagine di sfondo, sono parziale a non inserire immagini per far sì che IE si comporti. Grazie a tutti per i loro utili suggerimenti.
SigmaBeta

1
Ho scoperto che l'impostazione background-size: 100% 103%; background-position:center;è migliore. 100% per entrambi i valori aggiunge uno strano bordo in alto e in basso.
Morten Christiansen,

Aggiunta della dimensione dello sfondo: 100% 103%; background-position: center; non fa niente per me.
Gregory Bolkenstijn,

2
Non sei del tutto sicuro del motivo per cui stai utilizzando l'uri dati e non solo un'immagine? Immagino che un'immagine significherebbe una chiamata extra al server per gli utenti ie9, ma avere tutti quei caratteri extra inviati a browser non ie9 sembra dispendioso. La soluzione funziona per me come immagine, mi piacerebbe la spiegazione.
Esca

4
Il suo URI di dati manuale è quello che normalmente fanno alcuni preprocessori CSS durante il tempo di implementazione. A partire da "ma che tipo di brutto hack è quello", questa è una stronzata cardinale. SVG è un'immagine come qualsiasi altra, anche se vettoriale. Quindi chiamare SVG un hack e proporre invece un PNG è assolutamente privo di senso. Perché SVG è migliore? Indipendenza dalla risoluzione, lo stesso motivo per cui si utilizza il raggio del bordo anziché lo sfondo dell'immagine rasterizzata.
skrat,

104

Ho anche lavorato con questo problema. Un'altra "soluzione" è quella di aggiungere un div attorno all'elemento che ha il gradiente e gli angoli arrotondati. Rendi div quello stesso altezza, larghezza e valori degli angoli arrotondati. Imposta l'overflow su nascosto. Questa è fondamentalmente solo una maschera, ma funziona per me.

HTML:

<div class="mask roundedCorners">
    <div class="roundedCorners gradient">
        Content
    </div>
</div>

CSS:

.mask
{
    overflow: hidden;
}

.roundedCorners
{
    border-radius: 5px;
    -moz-border-radius: 5px;
    -webkit-border-radius: 5px;
}

.gradient
{
    filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#0065a4', endColorstr='#a0cf67',GradientType=0 ); /* IE6-9 */
}

3
Questo funziona perfettamente per me ed è molto più semplice rispetto alle altre soluzioni proposte.
Simon P Stevens,

Molto più facile della risposta attualmente accettata. Questo funziona in IE9 per me.
Andy McClubag,

Questo funziona ... così triste e patetico. Questo è il browser "HTML5" !? Perché non sono entusiasta di IE10.
Todd Vance,

@toddv Non ti preoccupare. Presto sarà tutto finito. Non abbastanza presto, ma presto. Vedi daringfireball.net/linked/2012/07/04/windows-hegemony Con un fortuna, nessuno dovrà mai preoccuparsi di supportare IE12 ... forse IE14 - diventa confuso.
jinglesthula,

2
Solo una nota minore, ma le dichiarazioni relative al raggio del bordo devono essere invertite per promuovere la compatibilità diretta. Ho fatto la modifica.
Parris,

44

Penso che valga la pena ricordare che in molti casi è possibile utilizzare un'ombra a riquadro per "falsificare" l'effetto gradiente ed evitare i brutti bordi in IE9. Funziona particolarmente bene con i pulsanti.

Vedi questo esempio: http://jsfiddle.net/jancbeck/CJPPW/31/

Confronto di uno stile di pulsante con sfumatura lineare o box-shadow


2
Ottima soluzione nel mio caso perché l'ho usato solo su un pulsante e avevo bisogno di un gradiente proprio come hai disegnato. Ho usato i commenti condizionali per gte IE9 per ora e poi applicatobox-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);
Volomike

elegante e semplice. i ++.
Eliran Malka,

1
+1 per pensare fuori dagli schemi. Funziona molto bene sia per le schede che per i pulsanti. L'uso dell'inserto mantiene il gradiente all'interno dell'elemento.
GlennG,

Questa è la migliore soluzione che abbia mai visto. Css puro, non richiede elementi aggiuntivi o immagini.
Zaqx,

1
bel trucco ma ho gradienti in tutto il sito. non posso cambiarli tutti per stupidi, ad es.
Mehmet Fatih Yıldız,

8

Puoi anche utilizzare CSS3 PIE per risolvere questo problema:

http://css3pie.com/

Naturalmente, ciò potrebbe essere eccessivo se stai solo dipendo da un singolo elemento con angoli arrotondati e un gradiente di sfondo, ma è un'opzione da considerare se stai incorporando un numero di funzioni CSS3 comuni nelle tue pagine e desideri un supporto facile per IE6 +


1
anche con css3pie e ie9, non vedo il gradiente. Vedo gli angoli arrotondati e l'ombra discendente, ma nessuna sfumatura.
Kevin,

7

Mi sono imbattuto anche in questo bug. Il mio suggerimento sarebbe di usare un'immagine di sfondo ripetuta per il gradiente in ie9. IE9 affianca correttamente l'immagine dietro i bordi arrotondati (a partire da RC1).

Non riesco a vedere come scrivere 100 righe di codice per sostituire 1 riga di CSS sia semplice o elegante. SVG è fantastico e tutto, ma perché passare tutto questo quando soluzioni più semplici per sfondi sfumati sono in circolazione da anni.


5

Mi sono anche bloccato nello stesso problema e ho scoperto che IE non è in grado di eseguire il rendering del raggio del bordo e del gradiente contemporaneamente, entrambi i conflitti, l'unico modo per risolvere questo mal di testa è rimuovere il filtro e utilizzare il gradiente tramite il codice svg, solo per IE ..

puoi ottenere il codice svg usando il loro codice colore gradiente, da Microsoft questo sito (creato appositamente per il gradiente in svg):

http://ie.microsoft.com/testdrive/graphics/svggradientbackgroundmaker/default.html

godere :)


Il link non è più valido.
schiaccia

5

Basta usare un div wrapper (arrotondato e overflow nascosto) per tagliare il raggio per IE9. Semplice, funziona su più browser. SVG, JS e commenti condizionali non sono necessari.

<div class="ie9roundedgradient"><div class="roundedgradient">text or whatever</div></div>

.ie9roundedgradient { 
display:inline-block; overflow:hidden; -webkit-border-radius: 8px; -moz-border-radius: 8px; border-radius: 8px; 
}
.roundedgradient { 
-webkit-border-radius: 8px; -moz-border-radius: 8px; border-radius: 8px; 
/* use colorzilla to generate your cross-browser gradients */ 
}

4

Questo post sul blog mi ha aiutato: http://abouthalf.com/2010/10/25/internet-explorer-9-gradients-with-rounded-corners/

Fondamentalmente, si utilizza un commento condizionale per rimuovere il filtro e quindi creare "sprite" di sfumature SVG che è possibile utilizzare come immagini di sfondo.

Semplice ed elegante!


Vivo questo. Soprattutto big up per avermi aiutato FINALMENTE a terminare la mia ricerca su come creare gli sprite usando SVG. Poiché SVG è scalabile e gli sprite sono possibili, trovo che i pacchetti di sprite SVG siano molto più versetili dei gradienti CSS e, come ho detto sopra, probabilmente vedranno il supporto del 100% nei browser molto prima dei gradienti CSS.
Kevin Peno,

Oh, l'unica cosa che aggiungerei a questo è che attualmente il webkit e, credo, l'opera supportano anche SVG nelle url()chiamate di immagini CSS . Ne rimane solo uno, quindi lascia cadere i 1000 condizionali e servi SVG per il bg su tutto ciò che lo supporta. Per tutti gli altri, servi un'immagine raster. Quindi questo hack diventa gestibile.
Kevin Peno,

4

IE9 gestisce insieme raggio e bordi sfumati correttamente. Il problema è che IE9 rende il filtro corretto oltre al gradiente. Il modo per risolverlo correttamente è disabilitare i filtri sulle dichiarazioni di stile che utilizzano la proprietà filter.

Ad esempio su come risolvere al meglio questo:

Hai una classe di pulsanti nel tuo foglio di stile principale.

.btn {
    background: linear-gradient(to bottom,  #1e5799 0%,#7db9e8 100%);
    filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#1e5799', endColorstr='#7db9e8',GradientType=0 );
}

In un foglio di stile IE9 condizionale:

.btn { filter: none; }

Finché il foglio di stile IE9 è referenziato nella tua testa dopo il tuo foglio di stile principale, questo funzionerà perfettamente.


2
ie9 non esegue il rendering di gradienti lineari
James Westgate,

3

C'è un modo semplice per farlo funzionare sotto IE9 con un solo elemento.

Dai un'occhiata a questo violino: http://jsfiddle.net/bhaBJ/6/

Il primo elemento imposta il Raggio-bordo. Il secondo pseudo-elemento imposta il gradiente di sfondo.

Poche istruzioni chiave:

  • il genitore deve avere una posizione relativa o assoluta
  • il genitore deve avere un overflow: nascosto ; (per rendere visibile l'effetto del bordo-raggio)
  • Lo pseudo-elemento :: before (o :: after) deve avere z-index: -1 (soluzione alternativa a)

La dichiarazione dell'elemento base è simile a:

.button{
    position: relative;
    overflow: hidden;        /*make childs not to overflow the parent*/

    border-radius: 5px;      /*don't forget to make it cross-browser*/

    z-index:2;               /*just to be sure*/
}

Dichiarazione pseudo-elemento:

.button:before{

    content: " ";                     /*make it a node*/
    display: block;     

    position: absolute;               
    top:0;left:0;bottom:0;right:0;    /*same width and height as parent*/

    z-index: -1;                      /*force it to NOT overlay the TEXT node*/

    /*GRADIENT declarations...*/
    background: -ms-linear-gradient(top,  #ff3232 0%,#7db9e8 100%);
    filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#ff3232',endColorstr='#7db9e8',GradientType=0 );

}

Semplicemente perfetto! Grazie! :)
majimekun,

Ho impostato il raggio del bordo su 20 nel tuo esempio e i bordi non sono tagliati in IE9
schiaccia

Prova a impostarlo nell'intestazione: <meta http-equiv = "Compatibile con X-UA" = "IE = 9" />
Marakoss,

2

Ho deciso di disabilitare IE9 dagli angoli arrotondati per aggirare questo errore. È pulito, facile e generico utilizzabile.

{
border-radius:10px;
border-radius:0px \0/;
background:linear-gradient(top , #ffeecc, #ff8800);
/* ... (-moz -ms,-o, -webkit) gradients */    
filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0,startColorstr=#ffeecc,endColorstr=#ff8800);
}

1

La maschera div in IE9 è una buona idea. Sto fornendo un codice completo per chiarire un po '. Anche se non sono contento di avvolgere il pulsante in un DIV, penso che sia più facile da capire che incorporare una maschera PNG o passare tutto lo sforzo usando SVG. Forse IE 10 lo supporterà correttamente.

<!DOCTYPE html>
<html>
<head>
<title>Button Test</title>
<style>
.btn_mask { cursor:pointer;padding:5px 10px;border-radius:11px 11px 11px 11px;
 background-color:transparent;-moz-border-radius:11px 11px 11px 11px;
 -webkit-border-radius:11px 11px 11px 11px;overflow:hidden;padding:0px;
 float:left; }
.btn { cursor:pointer;text-decoration:none;border:1px solid rgb(153,153,153);
 padding:5px 10px;color:rgb(0,0,0);font-size:14px;font-family:arial,serif;
 text-shadow:0px 0px 5px rgb(255,255,255);font-size:14px;
 border-radius:11px 11px 11px 11px;-moz-border-radius:11px 11px 11px 11px;
 -webkit-border-radius:11px 11px 11px 11px;box-shadow:0px 0px 0px rgb(0,0,0);
 -moz-box-shadow:0px 0px 0px rgb(0,0,0);
 -webkit-box-shadow:0px 0px 0px rgb(0,0,0);background-color:rgb(255,204,0);
 background-image:linear-gradient(-90deg,rgb(255,255,153),rgb(255,204,0));
 background-image:-webkit-gradient(linear,50% 0%,50% 100%,from(rgb(255,255,153)),to(rgb(255,204,0)));-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorStr='#ffffff', EndColorStr='#ffcc00)')";background-image:-moz-linear-gradient(-90deg,rgb(255,255,153),rgb(255,204,0));
}
.btn:hover { cursor:pointer;text-decoration:none; border:1px solid rgb(153,153,153); padding:5px 10px 5px 10px; color:rgb(0,0,0); font-size:14px; font-family:arial,serif; text-shadow:0px 0px 5px rgb(255,255,255); font-size:14px; border-radius:11px 11px 11px 11px; -moz-border-radius:11px 11px 11px 11px; -webkit-border-radius:11px 11px 11px 11px; box-shadow:0px 0px 0px rgb(0,0,0); -moz-box-shadow:0px 0px 0px rgb(0,0,0); -webkit-box-shadow:0px 0px 0px rgb(0,0,0); background-color:rgb(255,255,0); background-image:linear-gradient(-90deg,rgb(255,255,0),rgb(255,255,153)); background-image:-webkit-gradient(linear,50% 0%,50% 100%,from(rgb(255,255,0)),to(rgb(255,255,153))); background-image:-moz-linear-gradient(-90deg,rgb(255,255,0),rgb(255,255,153)); }
</style>
</head>
<body>
<form name='form1'>
<div class='btn_mask'><input type='button' class='btn' value='a button'></div>
<div class='btn_mask'><input type='button' class='btn' value='a button'></div>
<div class='btn_mask'><input type='button' class='btn' value='a button'></div>
<div class='btn_mask'><input type='button' class='btn' value='a button'></div>
</form>
</body>
</html>

1
background: #4f81bd; /* Old browsers */
/* IE9 SVG, needs conditional override of 'filter' to 'none' */
background: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiA/Pgo8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgdmlld0JveD0iMCAwIDEgMSIgcHJlc2VydmVBc3BlY3RSYXRpbz0ibm9uZSI+CiAgPGxpbmVhckdyYWRpZW50IGlkPSJncmFkLXVjZ2ctZ2VuZXJhdGVkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjAlIiB5MT0iMCUiIHgyPSIxMDAlIiB5Mj0iMCUiPgogICAgPHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iIzRmODFiZCIgc3RvcC1vcGFjaXR5PSIxIi8+CiAgICA8c3RvcCBvZmZzZXQ9IjEwMCUiIHN0b3AtY29sb3I9IiM4YWJiZDciIHN0b3Atb3BhY2l0eT0iMSIvPgogIDwvbGluZWFyR3JhZGllbnQ+CiAgPHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjEiIGhlaWdodD0iMSIgZmlsbD0idXJsKCNncmFkLXVjZ2ctZ2VuZXJhdGVkKSIgLz4KPC9zdmc+);
background: -moz-linear-gradient(left, #4f81bd 0%, #8abbd7 100%); /* FF3.6+ */
background: -webkit-gradient(linear, left top, right top, color-stop(0%,#4f81bd), color-stop(100%,#8abbd7)); /* Chrome,Safari4+ */
background: -webkit-linear-gradient(left, #4f81bd 0%,#8abbd7 100%); /* Chrome10+,Safari5.1+ */
background: -o-linear-gradient(left, #4f81bd 0%,#8abbd7 100%); /* Opera 11.10+ */
background: -ms-linear-gradient(left, #4f81bd 0%,#8abbd7 100%); /* IE10+ */
background: linear-gradient(left, #4f81bd 0%,#8abbd7 100%); /* W3C */
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#4f81bd', endColorstr='#8abbd7',GradientType=1 ); /* IE6-8 */

Stavo facendo questo per me e una volta rimosso il "filtro:" linea l'emorragia è andata via. Inoltre io uso PIE.

sanguina:

    background: #8abbd7; /* Old browsers */
/* IE9 SVG, needs conditional override of 'filter' to 'none' */
background: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiA/Pgo8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgdmlld0JveD0iMCAwIDEgMSIgcHJlc2VydmVBc3BlY3RSYXRpbz0ibm9uZSI+CiAgPGxpbmVhckdyYWRpZW50IGlkPSJncmFkLXVjZ2ctZ2VuZXJhdGVkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjAlIiB5MT0iMCUiIHgyPSIwJSIgeTI9IjEwMCUiPgogICAgPHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iIzhhYmJkNyIgc3RvcC1vcGFjaXR5PSIxIi8+CiAgICA8c3RvcCBvZmZzZXQ9IjEwMCUiIHN0b3AtY29sb3I9IiM0ZjgxYmQiIHN0b3Atb3BhY2l0eT0iMSIvPgogIDwvbGluZWFyR3JhZGllbnQ+CiAgPHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjEiIGhlaWdodD0iMSIgZmlsbD0idXJsKCNncmFkLXVjZ2ctZ2VuZXJhdGVkKSIgLz4KPC9zdmc+);
background: -moz-linear-gradient(top, #8abbd7 0%, #4f81bd 100%); /* FF3.6+ */
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#8abbd7), color-stop(100%,#4f81bd)); /* Chrome,Safari4+ */
background: -webkit-linear-gradient(top, #8abbd7 0%,#4f81bd 100%); /* Chrome10+,Safari5.1+ */
background: -o-linear-gradient(top, #8abbd7 0%,#4f81bd 100%); /* Opera 11.10+ */
background: -ms-linear-gradient(top, #8abbd7 0%,#4f81bd 100%); /* IE10+ */
background: linear-gradient(top, #8abbd7 0%,#4f81bd 100%); /* W3C */
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#8abbd7', endColorstr='#4f81bd',GradientType=0 ); /* IE6-8 */
-pie-background: linear-gradient(#8ABBD7, #4f81bd);
behavior: url(../PIE/PIE.htc);

Non sanguina:

    background: #8abbd7; /* Old browsers */
/* IE9 SVG, needs conditional override of 'filter' to 'none' */
background: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiA/Pgo8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgdmlld0JveD0iMCAwIDEgMSIgcHJlc2VydmVBc3BlY3RSYXRpbz0ibm9uZSI+CiAgPGxpbmVhckdyYWRpZW50IGlkPSJncmFkLXVjZ2ctZ2VuZXJhdGVkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjAlIiB5MT0iMCUiIHgyPSIwJSIgeTI9IjEwMCUiPgogICAgPHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iIzhhYmJkNyIgc3RvcC1vcGFjaXR5PSIxIi8+CiAgICA8c3RvcCBvZmZzZXQ9IjEwMCUiIHN0b3AtY29sb3I9IiM0ZjgxYmQiIHN0b3Atb3BhY2l0eT0iMSIvPgogIDwvbGluZWFyR3JhZGllbnQ+CiAgPHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjEiIGhlaWdodD0iMSIgZmlsbD0idXJsKCNncmFkLXVjZ2ctZ2VuZXJhdGVkKSIgLz4KPC9zdmc+);
background: -moz-linear-gradient(top, #8abbd7 0%, #4f81bd 100%); /* FF3.6+ */
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#8abbd7), color-stop(100%,#4f81bd)); /* Chrome,Safari4+ */
background: -webkit-linear-gradient(top, #8abbd7 0%,#4f81bd 100%); /* Chrome10+,Safari5.1+ */
background: -o-linear-gradient(top, #8abbd7 0%,#4f81bd 100%); /* Opera 11.10+ */
background: -ms-linear-gradient(top, #8abbd7 0%,#4f81bd 100%); /* IE10+ */
background: linear-gradient(top, #8abbd7 0%,#4f81bd 100%); /* W3C */
-pie-background: linear-gradient(#8ABBD7, #4f81bd);
behavior: url(../PIE/PIE.htc);

Correzione rapida dell'ombra di IE:

fixBoxShadowBlur($('*'));

function fixBoxShadowBlur(jQueryObject){
if($.browser.msie && $.browser.version.substr(0, 1) == '9'){
    jQueryObject.each(function(){
        boxShadow = $(this).css('boxShadow');
        if(boxShadow != 'none'){
            var bsArr = boxShadow.split(' ');
            bsBlur = parseInt(bsArr[2]) || 0;
            bsBlurMeasureType = bsArr[2].substr(("" + bsBlur).length);
            bsArr[2] = (bsBlur * 2) + bsBlurMeasureType;
            $(this).css('boxShadow', bsArr.join(' '));
        }
    });
}

}


1

È possibile utilizzare Shadow per ottenere il gradiente e funzionerà su Internet Explorer 9 conborder-radius

Qualcosa come questo:

box-shadow: inset 0px 0px 26px 5px gainsboro;

0

Non sono sicuro se si trattasse di una soluzione una tantum o valida ma ...

Ho scoperto che, purché il raggio del bordo sia maggiore della larghezza del bordo, non ho riscontrato il problema. Quando erano uguali stavo ottenendo gli angoli quadrati.


0

Usando compass and sass puoi facilmente ottenere così:

@import "compass";
#border-radius {
@include border-radius('RADIUS'px); }
#gradiant{
$experimental-support-for-svg: true;
@include background-image(linear-gradient('COLOR') %,('COLOR') %,...; }

Compass genererà un'immagine SVG per te.

così:

#gradiant {
 background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9InRvIiB5MT0iYm90dG9tIiB4Mj0idG8iIHkyPSJ0b3AiPjxzdG9wIG9mZnNldD0iMCUiIHN0b3AtY29sb3I9IiMwODJhMmUiLz48c3RvcCBvZmZzZXQ9IjM1JSIgc3RvcC1jb2xvcj0icmdiYSg4LCA0MiwgNDYsIDAuNzYpIi8+PHN0b3Agb2Zmc2V0PSI0MyUiIHN0b3AtY29sb3I9InJnYmEoNywgNDMsIDQ3LCAwLjcxKSIvPjxzdG9wIG9mZnNldD0iNTglIiBzdG9wLWNvbG9yPSJyZ2JhKDQsIDQ0LCA1MCwgMC41OCkiLz48c3RvcCBvZmZzZXQ9IjEwMCUiIHN0b3AtY29sb3I9IiMwNDJjMzIiLz48L2xpbmVhckdyYWRpZW50PjwvZGVmcz48cmVjdCB4PSIwIiB5PSIwIiB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIiBmaWxsPSJ1cmwoI2dyYWQpIiAvPjwvc3ZnPiA=');
background-size: 100%;
background-image: -webkit-gradient(linear, to bottom, to top, color-stop(0%, #082a2e),   color-stop(35%, rgba(8, 42, 46, 0.76)), color-stop(43%, rgba(7, 43, 47, 0.71)), color-stop(58%, rgba(4, 44, 50, 0.58)), color-stop(100%, #042c32));
background-image: -webkit-linear-gradient(to bottom, #082a2e 0%, rgba(8, 42, 46, 0.76) 35%, rgba(7, 43, 47, 0.71) 43%, rgba(4, 44, 50, 0.58) 58%, #042c32 100%);
background-image: -moz-linear-gradient(to bottom, #082a2e 0%, rgba(8, 42, 46, 0.76) 35%, rgba(7, 43, 47, 0.71) 43%, rgba(4, 44, 50, 0.58) 58%, #042c32 100%);
background-image: -o-linear-gradient(to bottom, #082a2e 0%, rgba(8, 42, 46, 0.76) 35%, rgba(7, 43, 47, 0.71) 43%, rgba(4, 44, 50, 0.58) 58%, #042c32 100%);
background-image: linear-gradient(to bottom, #082a2e 0%, rgba(8, 42, 46, 0.76) 35%, rgba(7, 43, 47, 0.71) 43%, rgba(4, 44, 50, 0.58) 58%, #042c32 100%);

}

/* line 28, ../sass/boxshadow.scss */
#border-radius {
 -moz-border-radius-topright: 8px;
  -webkit-border-top-right-radius: 8px;
   border-top-right-radius: 8px;
 -moz-border-radius-bottomright: 8px;
  -webkit-border-bottom-right-radius: 8px;
  border-bottom-right-radius: 8px;

}


0

Per me va bene...

<!--[if gte IE 9]>
  <style type="text/css">
  .gradient{
   filter: ;
}
</style>

css

border-radius: 10px;
background: #00a8db; /* Old browsers */
background: -moz-linear-gradient(top, #00a8db 0%, #116c8c 100%); /* FF3.6+ */
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#00a8db), color-    stop(100%,#116c8c)); /* Chrome,Safari4+ */
background: -webkit-linear-gradient(top, #00a8db 0%,#116c8c 100%); /* Chrome10+,Safari5.1+     */
background: -o-linear-gradient(top, #00a8db 0%,#116c8c 100%); /* Opera 11.10+ */
background: -ms-linear-gradient(top, #00a8db 0%,#116c8c 100%); /* IE10+ */
background: linear-gradient(to bottom, #00a8db 0%,#116c8c 100%); /* W3C */
-webkit-box-shadow: 1px 5px 2px #999;
-moz-box-shadow: 1px 1px 5px #999;
box-shadow: 1px 1px 5px #999;
color: #fff;
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#00a8db',     endColorstr='#116c8c',GradientType=0 ); /* IE6-8 */
/* IE9 SVG, needs conditional override of 'filter' to 'none' */
background:     url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiA/Pgo8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgdmlld0JveD0iMCAwIDEgMSIgcHJlc2VydmVBc3BlY3RSYXRpbz0ibm9uZSI+CiAgPGxpbmVhckdyYWRpZW50IGlkPSJncmFkLXVjZ2ctZ2VuZXJhdGVkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjAlIiB5MT0iMCUiIHgyPSIwJSIgeTI9IjEwMCUiPgogICAgPHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iIzAwYThkYiIgc3RvcC1vcGFjaXR5PSIxIi8+CiAgICA8c3RvcCBvZmZzZXQ9IjEwMCUiIHN0b3AtY29sb3I9IiMxMTZjOGMiIHN0b3Atb3BhY2l0eT0iMSIvPgogIDwvbGluZWFyR3JhZGllbnQ+CiAgPHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjEiIGhlaWdodD0iMSIgZmlsbD0idXJsKCNncmFkLXVjZ2ctZ2VuZXJhdGVkKSIgLz4KPC9zdmc+);
/* W3C Markup, IE10 Release Preview */ 
background-image: linear-gradient(to top, #116C8C 0%, #00A5D7 100%);
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.