2008-10-17 12 views
49

Wiem, że program Internet Explorer ma kilka zastrzeżonych rozszerzeń, dzięki czemu można tworzyć takie elementy, jak tworzenie elementów div z gradientowym tłem. Nie pamiętam nazwy elementu ani jego użycia. Czy ktoś ma jakieś przykłady lub linki?Kolory gradientowe w przeglądarce Internet Explorer

+3

Jedna mała uwaga: Znalazłem mały błąd podczas pracy nad IE9. Jeśli nie przeliterujesz całego koloru HEX, nie będzie działać poprawnie. tj. #cccccc NIE #ccc Mam nadzieję, że to pomoże. –

+0

Należy zachować ostrożność, stosując gradienty w wierszach tabeli. IE wydaje się traktować je inaczej, więc aby uzyskać odpowiedź na jakiekolwiek inne rozwiązanie tego problemu, musisz zawinąć zawartość tr w element div i zastosować do niej gradient. – Keith

+0

Uważam, że szukasz [tego konkretnego ustawienia CSS] (http://msdn.microsoft.com/en-us/library/ms532997.aspx). – tsilb

Odpowiedz

2

Od ScriptFX.com article:

<body bgcolor="#000000" topmargin="0" leftmargin="0"> 

    <div style="width:100%;height:100%; filter: progid: 
     DXImageTransform.Microsoft.Gradient (GradientType=1, 
     StartColorStr='#FF006600', EndColorStr='#ff456789')"> 

Your page content goes in here ...... at the end of all the page content, you must close the <div> tag, immediately before the closing <body> tag.... as below 

    </div> 
</body> 
11

Styl filter powinien pracować dla IE8 i IE9.

.gradientClass 
{ 
    filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0,startColorstr='#e6e6e6', endColorstr='#CCCCCC');  
} 
+2

To nie działa – Webnet

84

Kod używam dla wszystkich gradientów przeglądarek:

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; 

Trzeba będzie określić wysokość lub zoom: 1 zastosować hasLayout z elementem do tego, aby pracować w IE.


Aktualizacja:

Oto mniej Mixin (CSS) w wersji dla wszystkich użytkowników, że mniej tam:

.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; 
} 
+3

Doskonały fragment dla gradientów. zoom: 1 jest kluczem do odpowiedzi na to pytanie. – Voltin

+2

@ Blowsie Mam problemy z gradientami, gdy są używane w połączeniu z promieniem obramowania. W tym tle skutecznie oddziela rogi. Oczywiście zależnie od wybranego zakresu kolorów tło wypełnia rogi. Czy istnieje sztuczka do obsługi promienia obramowania i gradientu tła w IE? – codepuppy

+0

@codepuppy Jest to znany błąd bez rozwiązania, duże frameworki, takie jak bootstrap, wybrały opcję border-radius bez gradientu. – Blowsie

1

Spróbuj tego:

.red { 
    filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#e02a42', endColorstr='#a91903', GradientType=0); /* IE6-9 */ 
    height: 0; /* gain layout IE5+ */ 
    zoom: 1; /* gain layout IE7+ */ 
} 
+6

IE5? Och, proszę, nie ma potrzeby, aby – Ryan

3

Zauważ, że IE10 będzie wspierać gradienty następująco:

background: -ms-linear-gradient(#017ac1, #00bcdf); 
7

Znaczna haczyka, jeśli chodzi o gradienty w IE jest to, że choć można użyć filtrów Microsoftu .. .

filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#FCCA6D', endColorstr='#FEFEFE'); 
zoom:1; 

... zabijają wyraźny typ dla dowolnego tekstu objętego gradientem. Biorąc pod uwagę, że celem gradientów jest zwykle poprawianie interfejsu użytkownika, jest to dla mnie okazja.

W przypadku IE zamiast tego używam powtarzalnego obrazu tła. Jeśli obraz tła CSS jest połączony z gradientem CSS dla innych przeglądarek (jak na odpowiedź Blowsie), inne przeglądarki zignorują obraz w tle na korzyść gradientu css, więc ostatecznie będzie to miało zastosowanie do IE.

background-image: url('/Content/Images/button-gradient.png'); 

Istnieje wiele witryn, z których można szybko wygenerować tło gradientowe; Używam this.

6

Doskonałe narzędzie firmy Microsoft, pozwala na zbadanie kolorów w czasie rzeczywistym i generuje CSS dla wszystkich przeglądarek: http://ie.microsoft.com/testdrive/graphics/cssgradientbackgroundmaker/default.html

/* IE10 */ 
background-image: -ms-linear-gradient(top, #FFFFFF 0%, #B7B8BD 300%); 

/* Mozilla Firefox */ 
background-image: -moz-linear-gradient(top, #FFFFFF 0%, #B7B8BD 300%); 

/* Opera */ 
background-image: -o-linear-gradient(top, #FFFFFF 0%, #B7B8BD 300%); 

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

/* Webkit (Chrome 11+) */ 
background-image: -webkit-linear-gradient(top, #FFFFFF 0%, #B7B8BD 300%); 

/* Proposed W3C Markup */ 
background-image: linear-gradient(top, #FFFFFF 0%, #B7B8BD 300%); 
0

dwie rzeczy odkryłem podczas gdy zmaga się z IE 9 gradientu.

  1. Nie działa dla mnie -ms-filter. Musiałem użyć po prostu filter.
  2. Musiałem dodać height: 100% do mojej klasy dla IE, aby użyć gradientu.
+1

można było sprawdzić [CSS3Pie] (http://css3pie.com/), który jest skryptem dla IE, aby dodać obsługę niektórych funkcji CSS, w tym gradientów. Działa również w IE9. – Spudley

Powiązane problemy