2010-03-30 10 views
10

Mam następujący kod CSSJak mogę uzyskać IE8, aby zaakceptować tag CSS: before?

.editable:before { 
    content: url(../images/icons/icon1.png); 
    padding-right:5px; 
} 

ten jest używany w połączeniu z następującym znaczników:

<span class="editable"></span> 

W każdym innym błogosławionej przeglądarki świata moja ikona jest wyświetlana, ale IE8 wydaje się mieć problem z tym. Czy nie jest to pseudoelement CSS2 :before? czy nie jest to również polecenie CSS2? co daje?

+0

Nie wiem o IE8, ale: przed i: po nie są obsługiwane w IE7 i poniżej. Nie wiem, czy w końcu dodali wsparcie w 8 lub nie. Jeśli upewni się, że strona nie renderuje się w emulacji IE7. – prodigitalson

Odpowiedz

23

Aktualizacja: źle odczytałem stronę! IE 8 obsługuje:: wcześniej z obrazami, po prostu nie działa, gdy jest w trybie zgodności IE7.

IE8 obsługuje :before, lecz nie a także obrazy jako treści, gdy nie jest w trybie zgodności. Kudos do @toscho do testowania!

Jak kocham quirksmode.org, co sprawia, że ​​do czynienia z tych rzeczy co najmniej w połowie drogi do zniesienia. Ten facet zasługuje na medal!

+0

Ah i jeśli dobrze pamiętam, nie można wstawić do niego kodu HTML, więc użycie jest niemożliwe ... – NibblyPig

+0

@SLC: To jest renderowane jako tekst, tak. – ANeves

6

Można użyć obrazu jako tła dla generowanej treści:

<!DOCTYPE html> 
<meta charset="UTF-8"> 
<title>Generated content with an image</title> 
<style> 
p:before 
    { 
     content: ''; 
     padding: 20px; 
     background: url("css.png") center center no-repeat; 
    } 
</style> 
<p>Test</p> 

działa w IE 8, Opera i Mozilla. Live-Demo.

+0

masz rację! IE8 jako IE8 obsługuje obrazy jako zawartość. Pozdrawiam, zaktualizowałem moją odpowiedź. +1. –

24

Właściwie powinieneś być ostrożny i przeczytać szczegóły. Aby uzyskać szczegółowe informacje, patrz this link - który stanowi

w programie Windows Internet Explorer 8, jak również nowsze wersje systemu Windows Internet Explorer w trybie IE8 Standards, tylko forma jeden średnik z ten pseudo-element jest rozpoznawany -to jest,: wcześniej. Począwszy od Windows Internet Explorer 9, pseudoelement :: before wymaga dwóch dwukropków , chociaż forma dwukropowa jest nadal rozpoznawana i zachowuje się tak samo, jak dla postaci dwukropka.

Znaczenie dla przeglądarek <IE9 - należy użyć :before i >=IE9 - należy użyć ::before

+1

widząc to zaoszczędziło mi sporo czasu, IE8 nie działał dla mnie, ponieważ miałem :: –

+0

podwójny jelita grubego było moim problemem, dzięki za heads up. Jak sprawić, by ten postęp był kompatybilny? To znaczy. używać pojedynczego dwukropka, jeśli jest on mniejszy niż IEX vs podwójny dwukropek, jeśli jest większy niż IEY? – Jacques

+3

@Jacques pojedynczego dwukropka będzie działać tak samo dobrze w IE> = 9. Na razie trzymaj się pojedynczego dwukropka (który jest standardem CSS2.1). Tylko CSS3 rozróżnia pojedyncze i podwójne dwukropki dla pseudo selektorów i pseudoelementów. –

10

Podczas korzystania: before i: after, tylko uważać, aby nie używać podwójnych dwukropków (:: po - nie praca, ale: po będzie działać). Straciłem około 20 minut na to ...

+0

Dziękuję, to jest właściwie odpowiedź, której szukałem osobiście. IE8 jest teraz dla mnie pracą. (Stupid IE8!) – philtune

+0

Sir, uratowałeś mnie przed potencjalnie trwającą dziennie sesją debugowania, dlaczego to & $ (* # nie działałoby, podczas gdy każda tabela kompatybilności mówi, że powinna, –

+0

, ale lepiej użyć :: before, aby nie wyświetlać nowoczesnych przeglądarek pewien, czy możesz podwoić się jak zamknij: przed, zamknij: przed {etc ... – landed

0

To idzie od niesamowitego przykładu Pekka ... Moje szczyty na moim projekcie były wysokie dla rzędu ... Dodałem więc dopełnienie-dno: 0px;

Na wszelki wypadek.

.icon-spinner:before { 
    content: ''; 
    padding: 15px; 
    padding-bottom: 0px; 
    background: url("css.png") no-repeat left top; 
} 
Powiązane problemy