IE9 hiện không hỗ trợ CSS3 gradient. Tuy nhiên, đây là một giải pháp thay thế hay bằng cách sử dụng PHP để trả về một gradient SVG (tuyến tính dọc) thay vào đó, cho phép chúng tôi giữ thiết kế của mình trong các stylesheet của chúng tôi.
<?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>
Chỉ cần tải nó lên máy chủ của bạn và gọi URL như sau:
gradient.php?from=f00&to=00f
Điều này có thể được sử dụng cùng với các gradient CSS3 của bạn như thế này:
.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);
}
Nếu bạn cần nhắm mục tiêu dưới IE9, bạn vẫn có thể sử dụng phương pháp 'bộ lọc' độc quyền cũ:
.ie7 .my-color, .ie8 .my-color {
filter: progid:DXImageTransform.Microsoft.Gradient(startColorStr="#ff0000", endColorStr="#0000ff");
}
Tất nhiên bạn có thể sửa đổi mã PHP để thêm nhiều điểm dừng hơn trên gradient hoặc làm cho nó phức tạp hơn (gradient xuyên tâm, độ trong suốt, v.v.) nhưng điều này rất tốt cho những gradient tuyến tính (dọc) đơn giản.