2013-01-03 6 views
80

Tworzę podpis e-mail w formacie HTML z wbudowanym CSS (tj. CSS w atrybutach style) i jestem ciekawy, czy możliwe jest użycie pseudoelementów :before i :after.Używanie CSS: przed i: po pseudoelementach z wbudowanym CSS?

Jeśli tak, w jaki sposób zaimplementować coś takiego z wbudowanym CSS?

td { text-align: justify; } 
td:after { content: ""; display: inline-block; width: 100%; } 
+1

Czy trzeba go inline ? – Scrimothy

+6

Nie można używać wbudowanych stylów do kierowania pseudo-klas lub pseudo-elementów. –

+2

Prawdopodobny duplikat [Pseudo-klas CSS ze stylami wstawianymi] (http://stackoverflow.com/questions/5293280/css-pseudo-classes-w-inline-styles) – Champ

Odpowiedz

6

No nie można kierować pseudo-classes lub pseudo-elements w inline css jak David Thomas powiedział. Aby uzyskać więcej informacji zobacz this odpowiedź przez BoltClock około Pseudoklasy

opiniach Styl atrybut definiuje tylko właściwości stylu dla danego elementu HTML. Pseudo-klasy są członkiem rodziny selektorów, , które nie występują w atrybucie .....

Możemy również napisać użyć same dla pseudo-elementów

Nie. Atrybut stylu definiuje tylko właściwości stylu dla danego elementu HTML . Pseudoklasy i pseudoelementy są członkami rodziny selektorów, które nie występują w atrybucie, więc nie możesz ich stylować inline.

+0

Zobacz moją odpowiedź i mój komentarz na pytanie. – BoltClock

+0

tak, nie są one takie same. ale powód, dla którego nie można ich używać inline, jest taki sam, prawda? – Champ

+0

Odpowiedzi są podobne, ale pytania są bardzo różne. – BoltClock

79

Nie można określać stylów wstawianych dla pseudoelementów.

Dzieje się tak dlatego, że pseudoelementy, takie jak pseudoklasy (patrz moja odpowiedź na this other question), są zdefiniowane w CSS przy użyciu selektorów jako abstrakcji drzewa dokumentu, którego nie można wyrazić w HTML. Z kolei atrybut inline style jest określony w kodzie HTML dla określonego elementu.

Ponieważ style inline może nastąpić tylko w HTML, będą one miały zastosowanie tylko do elementu HTML, które zostały zdefiniowane na, a nie do żadnych pseudo-elementów generuje.

Tak na marginesie, główną różnicą pomiędzy pseudo-elementów i pseudo-klas w tym aspekcie jest to, że właściwości, które są dziedziczone domyślnie will be inherited przez :before i :after od elementu wytwarzającego, natomiast style Pseudo-klasa po prostu nie mają zastosowania w ogóle. W twoim przypadku, na przykład, jeśli umieścisz text-align: justify w atrybucie stylu wstawianego dla elementu td, zostanie on odziedziczony przez td:after. Ograniczeniem jest to, że nie można zadeklarować td:after z atrybutem stylu inline; musisz to zrobić w arkuszu stylów.

23

jak wspomniano powyżej: to nie jest możliwe wywołanie Css pseudo klasa/-elementowe rolkach. co teraz zrobiłem, to: nadaj elementowi unikalny identyfikator, np. identyfikator lub unikalna klasa. i napisać montażu <style> elementu

<style>#id29:before { content: "*";}</style> 
<article id="id29"> 
    <!-- something --> 
</article> 

fugly, ale co inline css isnt ..?

+2

to nie jest wbudowany styl CSS. Wewnętrzny CSS wymaga, aby atrybut style = "" był przekazywany do poszczególnych elementów HTML. Powszechnie wymagane do wysyłania CSS sformatowanych do Gmaila, który usuwa wszystko w tagach

'. –

+2

Korekta: Użyj pseudo-klasy ': scope':

' –