IE9 attualmente non supporta il gradiente CSS3. Tuttavia, ecco una bella soluzione alternativa utilizzando PHP per restituire invece un gradiente SVG (verticale lineare), che ci consente di mantenere il nostro design nei nostri fogli di stile.
<?php
$from_stop = isset($_GET['from']) ? $_GET['from'] : '000000';
$to_stop = isset($_GET['to']) ? $_GET['to'] : '000000';
header('Content-type: image/svg+xml; charset=utf-8');
echo '<?xml version="1.0"?>
';
?>
<svg xmlns="http://www.w3.org/2000/svg" version="1.1" width="100%" height="100%">
<defs>
<linearGradient id="linear-gradient" x1="0%" y1="0%" x2="0%" y2="100%">
<stop offset="0%" stop-color="#<?php echo $from_stop; ?>" stop-opacity="1"/>
<stop offset="100%" stop-color="#<?php echo $to_stop; ?>" stop-opacity="1"/>
</linearGradient>
</defs>
<rect width="100%" height="100%" fill="url(#linear-gradient)"/>
</svg>
Basta caricarlo sul tuo server e chiamare l'URL in questo modo:
gradient.php?from=f00&to=00f
Questo può essere usato insieme ai tuoi gradienti CSS3 come questo:
.my-color {
background-color: #f00;
background-image: url(gradient.php?from=f00&to=00f);
background-image: -webkit-gradient(linear, left top, left bottom, from(#f00), to(#00f));
background-image: -webkit-linear-gradient(top, #f00, #00f);
background-image: -moz-linear-gradient(top, #f00, #00f);
background-image: linear-gradient(top, #f00, #00f);
}
Se devi scegliere come target sotto IE9, puoi comunque utilizzare il vecchio metodo di "filtro" proprietario:
.ie7 .my-color, .ie8 .my-color {
filter: progid:DXImageTransform.Microsoft.Gradient(startColorStr="#ff0000", endColorStr="#0000ff");
}
Ovviamente puoi modificare il codice PHP per aggiungere più interruzioni al gradiente o renderlo più sofisticato (gradienti radiali, trasparenza ecc.) Ma questo è ottimo per quei semplici gradienti lineari (verticali).