2013-05-14 11 views
76

Żaden z następującego kodu działa:CSS: jak dodać białe spacje przed treścią elementu?

p:before { content: " "; } 
p:before { content: " "; } 

Jak dodać spacje przed zawartości elementu?

Uwaga: Aby nadać semantyczność, należy pokolorować obramowanie - lewe i lewe marginesy, a przestrzeń jako bezbarwny margines. :)

+4

Dlaczego nie po prostu dodaj prosty margines. – Cam

+4

Może dlatego, że margines/dopełnienie wpływa na cały blok. text-indent byłby lepszym wyborem. –

+0

Potrzebuję pokolorować brzeg lewy i lewy margines do semantycznego użytku :) Mogę dodać kilka elementów: before {content: "[rodzaj przestrzeni]"; tło: mycolor;} 'również. Wszystkie sposoby chciałem znać sposób dodawania spacji, trochę zabawy! – Hugolpz

Odpowiedz

170

Można użyć Unicode non przestrzeni zrywającą:

p:before { content: "\00a0 "; } 

Zobacz JSfiddle demo

[STYLE ulepszony przez @Jason Sperske]

+2

Zrobiłem niewielką edycję, aby można było zobaczyć efekt: http://jsfiddle.net/uMFHH/3/ (w przeciwnym razie wygląda jak margines, który przynosi dobre pytanie, dlaczego nie po prostu dodać margines?) –

+0

+1 za dobrą odpowiedź. –

+0

Ponieważ muszę pokolorować obramowanie - po lewej i po lewej stronie marginesowej :) – Hugolpz

31

Nie Fart wokół z wstawianie spacji. Po pierwsze, starsze wersje IE nie będą wiedzieć, o czym mówisz. Poza tym istnieją ogólnie czystsze sposoby.

Dla bezbarwnych wcięć użyj właściwości text-indent.

p { text-indent: 1em; } 

JSFiddle demo

Edit:

Jeśli chcesz miejsca, aby być w kolorze, można rozważyć dodanie lewy brzeg gruby pierwszej literze. (Prawie, ale nie całkiem "mówię" "zamiast", ponieważ wcięcie może być problemem, jeśli używasz obu, ale wydaje mi się to banalne polegać wyłącznie na granicy wcięcia.) Możesz określić, jak daleko i jak szeroki jest kolor przy użyciu lewego marginesu/dopełnienia/szerokości krawędzi pierwszej litery.

p:first-letter { border-left: 1em solid red; } 

Demo

+2

Jeśli utkniesz w IE <8, ta metoda zadziała, gdy przed/po pseudo elementy nie będą. – cimmanon

+1

@imimmanon: Tak. Według MDN działa to nawet w IE 3 (choć nie zdawałem sobie nawet sprawy, że * wtedy miał * CSS: P). – cHao

+0

+1 za dobrą odpowiedź. –

7

Od szukasz dodając przestrzeń pomiędzy elementami może trzeba coś tak prostego jak margin-left lub padding-lewo. Oto przykłady zarówno http://jsfiddle.net/BGHqn/3/

Spowoduje to dodanie 10 pikseli na lewo od elementu ust

p { 
    margin-left: 10px; 
} 

lub jeśli po prostu chcesz trochę wyściółka wewnątrz elemencie ust

p { 
    padding-left: 10px; 
}