Internet Explorer 8 (IE8) Chciałbym użyć następującego CSS:czy jest jakiś hack css IE8?
color : green;
chciałbym zastosować hack który dotyczy tylko IE8, IE9, nie IE6 i 7
Internet Explorer 8 (IE8) Chciałbym użyć następującego CSS:czy jest jakiś hack css IE8?
color : green;
chciałbym zastosować hack który dotyczy tylko IE8, IE9, nie IE6 i 7
użyj komentarzy warunkowych w HTML, jak poniżej:
<!--[if IE 8]>
<style>...</style>
<![endif]-->
Zobacz tutaj: http://www.quirksmode.org/css/condcom.html
można przetestować dla wersji IE niezawodnie i być pewny oth er przeglądarki nie będą zdezorientowane.
Nie możesz użyć hacka, który już pokazałeś, a następnie użyć IE7 i poniżej hack, aby to zmienić?
* Pleeeeease * nie używaj hacków! Hacki do nadpisania * innych * hacków jest jeszcze gorsze! –
@codeka - MGS nalegał już w komentarzu do innej odpowiedzi, że użyje tylko hacków, więc po prostu chodziłem z prądem. Gdyby to był ja, poszedłbym z warunkami, tak jak Plantir już odpowiedział. –
Użyj \0
.
color: green\0;
ja jednak zrobić polecić komentarzy warunkowych, ponieważ chcesz wykluczyć IE9, jak również i to jeszcze do przewidzenia, czy to wpłynie IE9 Hack jak również czy nie.
Bez względu na to, nigdy nie potrzebowałem specyficznego hackowania IE8. Co to jest, konkretny problem związany z IE8, który chciałbyś rozwiązać? Czy to jest renderowanie w trybie standardów IE8? Jego renderer jest całkiem niezły.
Tak, ale nie zapomnij ** spacji ** tuż przed '\ 0' w przeciwnym razie wpłynie to również na IE9. – ed1nh0
Wykonanie czegoś takiego powinno zadziałać.
<!--[if IE 8]>
<div id="IE8">
<![endif]-->
*Your content*
<!--[if IE 8]>
</div>
<![endif]-->
Wtedy twój CSS może wyglądać następująco:
#IE8 div.something
{
color: purple;
}
użyć kwerendy multimedialnych oddzielić każdą przeglądarkę:
/* IE6/7 uses media, */
@media, {
.dude { color: green; }
.gal { color: red; }
}
/* IE8 uses \0 */
@media all\0 {
.dude { color: brown; }
.gal { color: orange; }
}
/* IE9 uses \9 */
@media all and (monochrome:0) {
.dude { color: yellow\9; }
.gal { color: blue\9; }
}
/* IE10 and IE11 both use -ms-high-contrast */
@media all and (-ms-high-contrast:none)
{
.foo { color: green } /* IE10 */
*::-ms-backdrop, .foo { color: red } /* IE11 */
}
Referencje
Twoje rozwiązanie ie8 nie jest hackem zgodnym z IE8, próbuję go na moim komputerze, tzn. 9 i 10 również odziedziczy ten styl. Czy masz IE8 i poniżej hack? –
@JackZhang Tak, użyj haseł IE9, IE10, IE11, itp., Aby zresetować reguły stylu ustawione przez hak IE8. Zaktualizowałem odpowiedź tymi hackami. –
Rozwiązanie ie8 nadal nie działa dla IE8-only, '\ 0' będzie działało dla ie8, ie9 i ie10. Właściwie nie ma metody hackowania dla stylu tylko dla 8, z wyjątkiem warunkowego css. –
Istnieją różne sposoby, aby uzyskać klasę na elemencie HTML, który identyfikujące IE wersja jesteś twierdząc z: Modernizr, tym HTML 5 Boilerplate, etc - lub po prostu toczyć własną rękę . Wtedy możesz użyć tej klasy (np. .lt-ie9) w normalnym selektorze CSS, bez potrzeby hackowania. Jeśli chcesz tylko wpływać na IE8, a nie poprzednie wersje, przywróć poprzednią wartość za pomocą selektora .lt-ie8.
razie potrzeby niewielkie zmiany w użyciu CSS \ 9 to kierowanej IE8 i poniżej (IE6, IE7, IE8)
.element {
color:green \9;
}
Najlepszym sposobem jest użycie komentarzy warunkowych w HTML, jak poniżej:
<!--[if IE 8]>
<style>...</style>
<![endif]-->
Próbowałem z własnością 'content' i nie zmieni się ona w IE8 (nie sprawdziłem innych wersji IE). Zgaduję, że dzieje się tak dlatego, że przekazujemy wartość w cudzysłowach i ten hack (a może i inne hacki) może nie być z nią zgodny. 'content:" \ 0020 "\ 9;' – adi518
To będzie pracować dla wersji Bellow IE8
.lt-IE9 #yourID {
kod css
}
Na sam IE8 natywnej przeglądarki:
.classname{
*color: green; /* This is for IE8 Native browser alone */
}
więc ostatnie pytanie skłoniło mnie do zawiadomienia selektor ustawiony włamać do wykluczenia IE 8 tylko.
.selector, #excludeIE8::before {}
spowoduje, że IE 8 wyrzuci cały zestaw selektora, podczas gdy 5-7 i 9-11 odczyta go w porządku. Dowolny z selektorów ::
(::first-line, ::before, ::first-letter, ::selection
) zadziała, ja wybrałem tylko ::before
, więc linia odczytuje dokładnie. Należy pamiętać, że celem fałszywych ::before
selektora jest być fałszywy, więc należy go zmienić na coś innego, jeśli rzeczywiście mają element z identyfikatorem wystarczająco excludeIE8
Co ciekawe, w nowoczesnych przeglądarkach (FF 45 -52, GC 49-57, Edge 25/13), zły selektor ::
zjada cały zestaw selektorów (dabblet demo). Wydaje się , że ostatnia wersja Safari w systemie Windows (i LTE IE 7, lol) nie ma takiego zachowania, wciąż rozumiejąc ::before
. Dodatkowo, nie mogę znaleźć niczego w the spec, aby wskazać, że jest to zamierzone zachowanie, a ponieważ mogłoby spowodować pęknięcie dowolnego selektora zestaw zawierający: ::future-legitimate-pseudoelement
... Jestem skłonny powiedzieć, że to błąd - i taki, który W przyszłości skubimy nasze reszki.
Jednakże, jeśli tylko chcesz coś na poziomie usługi (zamiast poziomu reguły), Ziga powyżej miał najlepsze rozwiązanie poprzez dodanie \9
(przestrzeń jest klucz; NIE CopyPaste że inline jak to wykorzystuje nbsp):
/*property-level hacks:*/
/*Standards, Edge*/
prop:val;
/*lte ie 11*/
prop:val\9;
/*lte ie 8*/
prop:val \9;
/*lte ie 7*/
*prop:val;
/*lte ie 6*/
_prop:val;
/*other direction...*/
/*gte ie 8, NOT Edge*/
prop:val\0;
marginesie, czuję się brudny necromancer- ale chciałem gdzieś do udokumentowania wykluczyć-IE8 tylko selektor ustawiony Hack znalazłem dzisiaj, a to wydawało się być najbardziej odpowiednie miejsce.
Szukałem dobrym rozwiązaniem dla IE10 i poniżej CSS stylizacji (ale będzie pracować dla IE8 tylko jak dobrze) i wpadłem na ten pomysł:
<!--[if lt IE 10]><div class="column IE10-fix"><![endif]-->
<!--[if !lt IE 10]><!--><div class="column"><!--<![endif]-->
Deklaruję div lub cokolwiek chcę z dodatkową klasą, to pozwala mi mieć dodatkowy CSS w tym samym arkuszu stylów w bardzo czytelny sposób.
To jest W3C ważny, a nie dziwny hack CSS.
Potrzebuję hack not conditional –
Dlaczego potrzebujesz hack? Z natury należy unikać hacków (z wyjątkiem absolutnej ostatniej instancji). –
Powinieneś być w stanie przejść długą drogę używając warunków (które sami są sami), ponieważ pozwalają ci na wykonanie określonej sekcji kodu tylko wtedy, gdy wykryta zostanie pewna wersja i która może zawierać CSS, HTML, JS, ... – Palantir