Internet Explorer 9'daki Degradeler


111

IE9'daki gradyanlar için satıcı önekini bilen var mı yoksa hala özel filtrelerini kullanıyor olmamız mı gerekiyor?

Diğer tarayıcılar için sahip olduğum şey:

background-image: -moz-linear-gradient(top, #444444, #999999); /* FF3.6 */
background-image: -webkit-gradient(linear,left top,left bottom,color-stop(0, #444444),color-stop(1, #999999)); /* Saf4+, Chrome */
filter:  progid:DXImageTransform.Microsoft.gradient(startColorStr='#444444', EndColorStr='#999999'); /* IE6,IE7 */
-ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorStr='#444444', EndColorStr='#999999')"; /* IE8 */

Bonus olarak, Opera'nın satıcı önekini de bilen var mı?


Bir cevap seçmiş olsam da - bu sadece şu an için geçerli. Bu değişirse, birisi ileti dizisini güncelleyebilir mi? Çok minnettarım.
Sniffer

Tamamen. IE 9'un beta sürümünde olduğu gibi şimdi degradeleri uygulayacağından şüpheliyim.
Paul D. Waite

5
IE9 gradyanları desteklemez ancak IE10 destekleyecektir.
22

4
IE tamamen berbat bir tarayıcıdır, satır içi blokları desteklemez, konum değerleri sebepsiz yere kırılır, gradyan desteği yoktur, cehennem kadar yavaş ... Kullanıcılarımızı boşa harcamak yerine IE'yi kullanmayı bırakmaları gerektiği konusunda uyarmaya başlayalım. bir alt standart tarayıcıyı destekleyen zaman. Kişisel olarak, yıllardır IE kullanıcılarının sayfalarımdan herhangi birini görüntülemesini tamamen engelliyorum (onları gerçek bir tarayıcı edinmeye yönlendiriyorum) ve bir satışı hiç kaybetmedim. Biraz araştırma yapın ve IE'nin tüm internet trafiğinin <% 5'ini ve satışların <% 1'ini oluşturduğunu göreceksiniz. Neden destekliyoruz?

12
Dan, numaralarının nereden geldiğiyle ilgileniyorum, IE'nin trafiğin% 5'inden az olduğunu belirten tek bir kaynak bulamıyorum.
Jamie Taylor

Yanıtlar:


44

IE9 beta 1'den itibaren yine de özel filtrelerini kullanmanız gerekir.


2
Css3please.com'a göre IE10 , CSS gradyanlarını desteklediği için görünüyor, bu iyi bir haber ...
Sniffer

css3please.com benimkine bir çözüm bulmama yardımcı oldu. Teşekkürler
2013

57

Görünüşe göre partiye biraz geç kaldım, ancak işte en iyi tarayıcılardan bazıları için bir örnek:

/* IE10 */ 
background-image: -ms-linear-gradient(top, #444444 0%, #999999 100%);

/* Mozilla Firefox */ 
background-image: -moz-linear-gradient(top, #444444 0%, #999999 100%);

/* Opera */ 
background-image: -o-linear-gradient(top, #444444 0%, #999999 100%);

/* Webkit (Safari/Chrome 10) */ 
background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0, #444444), color-stop(1, #999999));

/* Webkit (Chrome 11+) */ 
background-image: -webkit-linear-gradient(top, #444444 0%, #999999 100%);

/* Proposed W3C Markup */ 
background-image: linear-gradient(top, #444444 0%, #999999 100%);

Kaynak: http://ie.microsoft.com/testdrive/Graphics/CSSGradientBackgroundMaker/Default.html

Not: Bu tarayıcıların tümü, onaltılık gösterim yerine rgb / rgba'yı da destekler.


10
Henüz IE10'un büyük bir tarayıcı olduğunu düşünmüyorum.
David Murdoch

3
@DavidMurdoch teknik olarak doğru, ancak mülkiyet uzantısını CSS'nize eklememek mantıklı değil, çünkü ne olacağını biliyoruz. Sonuçta, IE10 büyük bir tarayıcı olmaya mahkumdur.
thepeer

4
@Robotsushi, IE9 için soruyu cevaplamasa da (seçilen cevap cevap veriyor, muhtemelen bu yüzden seçildi), bu soru "internet explorer css gradyanları" için Google sonuçlarının ilk sayfasında yer alıyor, bu yüzden yok IE10, Windows 7 için neredeyse hazır olduğundan burada yararlı bir şeye sahip olmanın herhangi bir zararı
Kevin Arthur

Firefox ve Opera'nın en son sürümleri W3C standardını destekler. (Windows 7'de Firefox 19 ve Opera
12.14'te

2
Bu, IE9'a hitap eden soru için en çok oy alan cevap olduğundan, IE9 desteğini içerecek şekilde sonuna: filtreyi eklemelidir.
Joel Coehoorn

46

En iyi tarayıcılar arası çözüm,

background: #fff;
background: -moz-linear-gradient(#fff, #000);
background: -webkit-linear-gradient(#fff, #000);
background: -o-linear-gradient(#fff, #000);
background: -ms-linear-gradient(#fff, #000);/*For IE10*/
background: linear-gradient(#fff, #000);
filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0,startColorstr='#ffffff', endColorstr='#000000');/*For IE7-8-9*/ 
height: 1%;/*For IE7*/ 

37

IE9 şu anda CSS3 gradyan desteğinden yoksundur. Bununla birlikte, tasarımımızı stil sayfalarımızda tutmamızı sağlayan, bunun yerine bir SVG (dikey doğrusal) gradyan döndürmek için PHP'yi kullanan güzel bir geçici çözüm.

<?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>

Basitçe sunucunuza yükleyin ve URL'yi şöyle arayın:

gradient.php?from=f00&to=00f

Bu, aşağıdaki gibi CSS3 gradyanlarınızla birlikte kullanılabilir:

.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);
}

IE9'un altında hedeflemeniz gerekirse, yine de eski tescilli 'filtre' yöntemini kullanabilirsiniz:

.ie7 .my-color, .ie8 .my-color {
    filter: progid:DXImageTransform.Microsoft.Gradient(startColorStr="#ff0000", endColorStr="#0000ff");
}

Elbette, eğime daha fazla durak eklemek için PHP kodunu değiştirebilir veya daha karmaşık hale getirebilirsiniz (radyal gradyanlar, şeffaflık vb.), Ancak bu, bu basit (dikey) doğrusal gradyanlar için harikadır.


Zarif çözüm. Bilginize: Sadece SVG edilir doğruladı değil destekleyici tarayıcılar için indirilebilir linear-gradient.
Jonathan Cross

Bu svg dosyalarını oluşturulduktan sonra önbelleğe almanın bir yolu olup olmadığını merak ediyorum.
Mike Kormendy

Daha sağlam bir soru, önbelleğe alınmış bir dosya istemekle her seferinde bir dosya akışı oluşturmak için hem zaman hem de sunucu yükündeki performansın ne olduğunu bulmaktır.
Mike Kormendy

1
PHP, UI tasarımınız konusunda asla bilgi sahibi olmamalı veya yardım etmemelidir. Müşterinin ihtiyaçlarını müşteriden ayırmayın.
Alex White

11

Tüm tarayıcı gradyanları için kullandığım kod:

background: #0A284B;
background: -webkit-gradient(linear, left top, left bottom, from(#0A284B), to(#135887));
background: -webkit-linear-gradient(#0A284B, #135887);
background: -moz-linear-gradient(top, #0A284B, #135887);
background: -ms-linear-gradient(#0A284B, #135887);
background: -o-linear-gradient(#0A284B, #135887);
background: linear-gradient(#0A284B, #135887);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#0A284B', endColorstr='#135887');
zoom: 1;

Bunun IE'de çalışması için bir yükseklik belirtmeniz veya öğeye zoom: 1başvurmanız hasLayoutgerekir.


Güncelleme:

İşte tüm LESS kullanıcıları için bir LESS Mixin (CSS) sürümü:

.gradient(@start, @end) {
    background: mix(@start, @end, 50%);
    filter: ~"progid:DXImageTransform.Microsoft.gradient(startColorStr="@start~", EndColorStr="@end~")";
    background: -webkit-gradient(linear, left top, left bottom, from(@start), to(@end));
    background: -webkit-linear-gradient(@start, @end);
    background: -moz-linear-gradient(top, @start, @end);
    background: -ms-linear-gradient(@start, @end);
    background: -o-linear-gradient(@start, @end);
    background: linear-gradient(@start, @end);
    zoom: 1;
}

Bir LESS kullanıcısı olarak, gradyanları IE9'da da çalıştırmanın bir yolunu araştırıyordum. SVG'nin nasıl oluşturulacağını ayrıntılarıyla anlatan bir blog makalesi buldum: blog.philipbrown.id.au/2012/09/…
James Long

6

Opera yakında gradyan desteğinin yanı sıra diğer CSS özellikleriyle kullanılabilir yapılara sahip olmaya başlayacak.

W3C CSS Çalışma Grubu, CSS 2.1 ile bitmedi bile, bunu biliyorsunuz, değil mi? Çok yakında bitirmeyi planlıyoruz. CSS3 tam olarak modülerleştirilmiştir, böylece modülleri uygulamaya tam bir spesifikasyondan daha hızlı taşıyabiliriz.

Her tarayıcı şirketi, farklı bir yazılım döngüsü metodolojisi, testi vb. Kullanır. Yani süreç zaman alıyor.

Eminim pek çok okuyucu, CSS3'te herhangi bir şey kullanıyorsanız, "aşamalı geliştirme" denen şeyi yaptığınızı bilir - en çok desteğe sahip tarayıcılar en iyi deneyimi alır. Bunun diğer kısmı "zarif bozulmadır", yani deneyimin hoş olacağı, ancak bu tarayıcı modülü veya modülün yapmak istediğiniz şeyle ilgili kısımlarını uygulayana kadar belki de en iyi veya en çekici olmayacağı anlamına gelir.

Bu, ne yazık ki ön uç geliştiricilerin, uygulamalarda tutarsız zamanlama nedeniyle son derece sinirli olduğu oldukça tuhaf bir durum yaratır. Yani her iki tarafta da gerçek bir zorluk - tarayıcı şirketlerini, W3C'yi veya daha kötüsü - kendinizi mi suçluyorsunuz (tanrı, hepsini bilemeyeceğimizi biliyor!) Bir tarayıcı şirketi ve W3C grubu için çalışan bizleri yapın üyeler kendimizi mi suçluyor? Sen?

Tabii ki değil. Bu her zaman bir denge oyunudur ve şimdiye kadar, bir endüstri olarak bu denge noktasının gerçekte nerede olduğunu bulamadık. İşte evrimsel teknolojide çalışmanın keyfi bu :)


4

IE9'un hala CSS gradyanlarını desteklemeyeceğini anlıyorum. Bu utanç verici, çünkü diğer birçok harika yeni şeyi destekliyor.

CSS3Pie'ye bakmak isteyebilirsiniz tüm sürümlerinin çeşitli CSS3 özelliklerini (gradyanlar dahil, aynı zamanda kenarlık yarıçapı ve kutu gölgesi dahil) minimum bir yolu olarak .

CSS3Pie'nin IE9 ile çalıştığına inanıyorum (Yayın öncesi sürümlerde denedim, ancak henüz mevcut beta sürümünde değil).


Teşekkürler Spudley. IE6'dan 8'e kadar CSS3Pie kullanıyorum, ancak IE9'da kullanmaktan kurtulmayı umuyordum! IE8'de CSS3Pie stillerimle her IE için ayrı bir stil sayfam var. Şu anda kullandığım CSS3'te eksik olan tek şey gradyanlar olduğu sürece, bundan kurtulabilirsem CSS3Pie kullanmadan IE9 için başka bir stil sayfası ekleyeceğim.
Sniffer

Bu gönderiyi görmedim bile, benim hatam. Sadece bir cevap yazdım ve aynı bilgilerle onu silmek için oy verdim. Not: Bilinen sorunlara karşı dikkatli olun: css3pie.com/documentation/known-issues
NateDSaint

2

IE9'dan emin değilim, ancak Opera'nın henüz herhangi bir gradyan desteği yok gibi görünüyor:

Bu sayfada "gradyan" hiçbir şekilde geçmez.

Robert Nyman'ın, Opera olmayan tüm tarayıcılarda CSS gradyanlarının çalışmasını sağlama konusunda yazdığı harika bir makale var:

Bunun bir görüntüyü yedek olarak kullanmak için genişletilip genişletilemeyeceğinden emin değilim.


1
Bu beni şaşırtıyor, çünkü Opera genellikle standartları uygulamada ön saflarda yer alıyor. Cevap için teşekkürler Paul.
Sniffer

1
Yine de gradyanların bunu bir standart haline getirdiğini sanmıyorum. Süreci anladığım kadarıyla, yeni CSS özellikleri bir tarayıcıda uygulanma eğilimindedir ve sonunda bir standartta belirtilir. WebKit ekibinin ilk olarak CSS'de gradyanları uyguladığına inanıyorum (Microsoft'u ve onun filtermalzemelerini hesaba katmazsanız, ki bu benim kitabımda gerçekten CSS olarak nitelendirilmez). Firefox şimdi onları takip etti, ancak henüz bir W3C CSS taslak spesifikasyonunda hiçbir şey görünmüyor: bkz. Google.co.uk/…
Paul D. Waite,


Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.