2011-07-23 17 views
27

czytałem przez resecie CSS Erica Meyera i zobaczyłem to:`treści: ''` vs `treści: none`

blockquote:before, blockquote:after, 
q:before, q:after { 
    /* ? */ content: ''; 
    /* ? */ content: none; 
} 

Zakładam, że niektóre przeglądarki obsługują content: '' a niektóre content: none, czy to przypadek? A które przeglądarki obsługują?

Odpowiedz

33

Meyer przypisuje Paulowi Chaplinowi tę wersję stylu blokowania/q resetowania.

Chaplin na post na temat zawiera następujący blok stylu, pomocniczo adnotowane.

blockquote, q 
{ 
    quotes: none; 
} 

/* 
Safari doesn't support the quotes attribute, so we do this instead. 
*/ 
blockquote:before, blockquote:after, q:before, q:after 
{ 
    /* 
    CSS 2; used to remove quotes in case "none" fails below. 
    */ 
    content: ""; 
    /* 
    CSS 2.1; will remove quotes if supported, and override the above. 
    User-agents that don't understand "none" should ignore it, and 
    keep the above value. This is here for future compatibility, 
    though I'm not 100% convinced that it's a good idea... 
    */ 
    content: none; 
} 

gotować go: wersje bieżące większości przeglądarek po prostu wspierać quotes: none styl, który eliminuje potrzebę korzystania z :before i :after selektorów. Osobliwym człowiekiem był Safari/WebKit, który nie szanował quotes: none. Następnym sposobem na rozwiązanie tego problemu było pseudoelementy :before/, ale w czasie pisania tego tekstu WebKit nie obsługiwał również content: none, więc wymagane było content: "".

Jednak ten post był w 2008 roku, a wersja quick test z obecnymi przeglądarkami WebKit (Safari 5.1 i Chrome 12) pokazuje, że quotes: none działa prawidłowo na obu. Model content: none bug against WebKit jest nadal otwarty z jakiegoś powodu, podczas gdy model bug for the quotes property został zamknięty dość niedawno.

Krótko mówiąc, wydaje się, że dodatkowe style obsługują starsze wersje Safari (i prawdopodobnie Chrome). Trochę trudniej jest ustalić dokładnie, kiedy otrzymają wsparcie, ale aktualne wersje wszystkich przeglądarek wydają się być w porządku z quotes: none (i content: none).

+0

Więc nie ma * prawdziwej * korzyści z używania 'content: none'? –

+9

'content: none' i' content: "" "nie są identyczne. 'content: none' służy do jawnego zapobiegania generowaniu pseudoelementu' before' lub 'after' (tak naprawdę jest używane tylko do przesłonięcia innego stylu, który generowałby zawartość), podczas gdy' content: "" 'tworzy dodatkowe elementy , ale są puste. Jeśli chodzi o * rzeczywistą * korzyść, kombinacja stylów na ': before: lub': after' sprawi, że różnica będzie widoczna (jak niektóre dopełnienie i kolor tła), ale prawdopodobnie bardziej do "czystości" lub "poprawności". W każdym razie nie zaszkodzi mieć 'content: none' do obsługi przeglądarek. –

+0

tylko dlatego, że natknąłem się na to, gdy nadpisałem poprzedni styl. Zauważyłem, że zawartość "" z pewnością zawierała niektóre z poprzednich stylów, a treść "none" nie działała w iPadzie, którego używam do testowania (jak zasugerowano w powyższym komentarzu). Użyłem display none na pseudoelementie jako override "belt and braces" (zamiast resetować każdy styl) – user1010892