IE9 najwyraźniej jest w stanie obsługiwać zaokrąglone rogi za pomocą standardowej definicji CSS3 border-radius
.
Co z obsługą promienia granicy i gradientu tła? Tak, IE9 ma obsługiwać je oba osobno, ale jeśli pomieszacie oba gradient spadnie z zaokrąglonego rogu.
Widzę też dziwność z cieniami ukazującymi się jako jednolita czarna linia pod pudełkiem z zaokrąglonymi narożnikami.
Oto obrazy pokazane w IE9:
Jak mogę obejść ten problem?
internet-explorer-9
gradient
compass-sass
css
SigmaBetaTooth
źródło
źródło
Odpowiedzi:
Oto jedno rozwiązanie, które dodaje gradient tła, używając identyfikatora URI danych do utworzenia półprzezroczystego obrazu, który nakłada się na dowolny kolor tła. Zweryfikowałem, że jest prawidłowo przycięty do promienia krawędzi w IE9. Jest to lżejsze niż propozycje oparte na SVG, ale jako minus, nie jest niezależne od rozdzielczości. Kolejna zaleta: działa z obecnym HTML / CSS i nie wymaga pakowania dodatkowych elementów.
Przechwyciłem losowy gradient PNG 20x20 za pomocą wyszukiwania w sieci i przekonwertowałem go na identyfikator URI danych za pomocą narzędzia online. Wynikowy identyfikator URI danych jest mniejszy niż kod CSS dla całego bałaganu SVG, a tym bardziej samego SVG! (Możesz zastosować to warunkowo do IE9 tylko przy użyciu stylów warunkowych, specyficznych dla przeglądarki klas css itp.) Oczywiście, generowanie PNG działa świetnie dla gradientów wielkości przycisku, ale nie gradientów wielkości strony!
HTML:
CSS:
źródło
background-size: 100% 103%; background-position:center;
jest lepsze. 100% dla obu wartości dodaje dziwne obramowanie na górze i na dole.Pracowałem również z tym problemem. Innym „rozwiązaniem” jest dodanie div wokół przedmiotu, który ma gradient i zaokrąglone rogi. Niech div ma taką samą wysokość, szerokość i zaokrąglone wartości narożne. Ustaw przepełnienie na ukryte. To jest po prostu maska, ale działa dla mnie.
HTML:
CSS:
źródło
Myślę, że warto wspomnieć, że w wielu przypadkach można użyć wstawionego cienia do „fałszowania” efektu gradientu i unikania brzydkich krawędzi w IE9. Działa to szczególnie dobrze z przyciskami.
Zobacz ten przykład: http://jsfiddle.net/jancbeck/CJPPW/31/
źródło
box-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);
Aby rozwiązać ten problem, możesz także użyć narzędzia CSS3 PIE.
http://css3pie.com/
Oczywiście może to być przesada, jeśli zależysz tylko od jednego elementu z zaokrąglonymi narożnikami i gradientem tła, ale można rozważyć, czy wprowadzasz na swoich stronach wiele typowych funkcji CSS3 i chcesz łatwego wsparcia dla IE6 +
źródło
Na ten błąd też wpadłem. Moją sugestią byłoby użycie powtarzanego obrazu tła dla gradientu w ie9. IE9 poprawnie umieszcza obraz za zaokrąglonymi krawędziami (od wersji RC1).
Nie widzę, jak napisanie 100 linii kodu w celu zastąpienia 1 linii CSS jest proste lub eleganckie. SVG jest w porządku, ale po co przechodzić przez to wszystko, skoro od lat istnieją łatwiejsze rozwiązania dla gradientowego tła.
źródło
Utknąłem również w tym samym problemie i stwierdziłem, że IE nie może renderować promienia granicy i gradientu jednocześnie, oba konflikty, jedynym sposobem rozwiązania tego problemu jest usunięcie filtra i użycie gradientu za pomocą kodu svg, tylko dla IE ..
możesz pobrać kod svg, używając ich kodu koloru gradientu, z witryny Microsoft (specjalnie dla gradientu do svg):
http://ie.microsoft.com/testdrive/graphics/svggradientbackgroundmaker/default.html
cieszyć się :)
źródło
Wystarczy użyć div otoki (zaokrąglone i ukryte przepełnienie), aby przyciąć promień dla IE9. Prosty, działa w różnych przeglądarkach. Komentarze SVG, JS i warunkowe są niepotrzebne.
źródło
Ten post na blogu pomógł mi: http://abouthalf.com/2010/10/25/internet-explorer-9-gradients-with-rounded-corners/
Zasadniczo używasz komentarza warunkowego, aby usunąć filtr, a następnie tworzysz „duszki” SVG gradientów, które możesz wykorzystać jako obrazy tła.
Prosty i elegancki!
źródło
url()
wywołaniach obrazów CSS . Pozostało tylko jedno przytrzymanie, więc upuść 1000 warunków i podaj SVG dla bg na wszystkich, którzy go obsługują. Dla wszystkich innych podaj pospieszny obraz. Wtedy ten hack staje się możliwy do zarządzania.IE9 poprawnie obsługuje promień krawędzi i gradienty. Problem polega na tym, że IE9 czyni filtr odpowiednim oprócz gradientu. Sposobem na prawidłowe rozwiązanie tego problemu jest wyłączenie filtrów w deklaracjach stylu, które wykorzystują właściwość filter.
Jako przykład najlepszego rozwiązania tego problemu:
W głównym arkuszu stylów masz klasę przycisków.
W warunkowym arkuszu stylów IE9:
Dopóki arkusz stylów IE9 jest przywoływany w twojej głowie po głównym arkuszu stylów, będzie to działało idealnie.
źródło
Istnieje prosty sposób, aby działał pod IE9 tylko z JEDNYM elementem.
Spójrz na to skrzypce: http://jsfiddle.net/bhaBJ/6/
Pierwszy element ustawia promień obramowania. Drugi pseudoelement ustawia gradient tła.
Kilka kluczowych instrukcji:
Deklaracja elementu podstawowego przebiega mniej więcej tak:
Deklaracja pseudoelementowa:
źródło
Postanowiłem wyłączyć IE9 z zaokrąglania narożników, aby obejść ten błąd. Jest czysty, łatwy i ogólny w użyciu.
źródło
Div maski w IE9 jest dobrym pomysłem. Dostarczam kompletny kod, aby trochę wyjaśnić. Chociaż nie jestem zadowolony z zawinięcia przycisku w DIV, myślę, że łatwiej to zrozumieć niż osadzanie maski PNG lub przechodzenie przez cały wysiłek przy użyciu SVG. Może IE 10 będzie go obsługiwał poprawnie.
źródło
Robił mi to i po usunięciu linii „filtr:” krwawienie ustąpiło. Plus używam SROKI.
Krwawienia:
Nie krwawi:
Szybka poprawka Shadow IE:
}
źródło
Możesz użyć cienia, aby uzyskać gradient, i będzie działać na Internet Explorerze 9
border-radius
Coś takiego:
źródło
Nie jestem pewien, czy to było jednorazowe, czy prawidłowe obejście, ale ...
Odkryłem, że pod warunkiem, że promień granicy jest większy niż szerokość granicy, nie napotkałem problemu. Kiedy były takie same, miałem kwadratowe rogi.
źródło
Za pomocą kompasu i sassa możesz łatwo to osiągnąć w następujący sposób:
Kompas wygeneruje dla Ciebie obraz SVG.
tak:
}
}
źródło
Pracuje dla mnie...
css
źródło