CSS: como adicionar espaço em branco antes do conteúdo do elemento?


118

Nenhum dos códigos a seguir funciona:

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

Como adiciono espaço em branco antes do conteúdo do elemento?

Observação: preciso colorir a borda esquerda e a margem esquerda para uso semântico e usar o espaço como margem incolor. :)


5
Por que não apenas adicionar margem simples.
Câmera de

5
Talvez porque a margem / preenchimento afeta o bloco inteiro. text-indent seria uma escolha melhor
nice ass

Preciso colorir a borda esquerda e a margem esquerda para uso semântico :) Posso adicionar vários element:before { content:"[a kind of space]"; background: mycolor;}também. De todas as maneiras, eu queria saber uma maneira de adicionar espaços, meio divertido!
Hugolpz

1
@Hugolpz: Você poderia fazer basicamente a mesma coisa com p:first-letter { border-left: 1ex solid mycolor; }.
cHao

margens @carn são estáticos, espaço largura é em relação ao tamanho da fonte
Não amou

Respostas:


248

Você pode usar o Unicode de um espaço sem quebra:

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

Veja a demonstração JSfiddle

[estilo melhorado por @Jason Sperske]


2
Fiz uma pequena edição para que você pudesse ver seu efeito: jsfiddle.net/uMFHH/3 (caso contrário, parece apenas uma margem, o que traz uma boa pergunta, por que não adicionar apenas uma margem?)
Jason Sperske

Porque preciso colorir a borda esquerda e a margem esquerda :)
Hugolpz

3
Por que o espaço no final de "\00a0 "? Isso é necessário ou podemos apenas fazer "\00a0"?
jbyrd

1
@jbyrd: não necessário (consulte jsfiddle.net/nhyw6e9q ). Deixei lá para mostrar que o espaço normal não é contabilizado.
Hugolpz

40

Não se preocupe com a inserção de espaços. Por um lado, as versões mais antigas do IE não saberão do que você está falando. Além disso, porém, existem formas mais limpas em geral.

Para recuos incolores, use a text-indentpropriedade.

p { text-indent: 1em; }

JSFiddle demo

Editar:

Se quiser que o espaço seja colorido, você pode adicionar uma borda esquerda grossa à primeira letra. (Eu diria quase-mas-não-diria "em vez", porque o recuo pode ser um problema se você usar ambos. Mas parece sujo para mim confiar apenas na borda para recuar.) Você pode especificar a distância e a largura da cor usando a margem esquerda / preenchimento / largura da borda da primeira letra.

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

Demo


2
Se você não tiver suporte para o IE <8, esse método funcionará, enquanto os pseudoelementos antes / depois não.
cimmanon

1
@cimmanon: Sim. De acordo com o MDN, isso funciona até no IE 3 (embora eu nem percebesse que eles tinham CSS na época: P).
cHao de

Você não pode colorir um recuo assim { text-indent: 1em; }. Mas podemos colorir um espaço assim :before {content: "\00a0 "; background: #000; }. Veja Fiddle
Hugolpz

1
@Hugolpz: Um recuo de texto? Não. não posso colorir de forma tão diferente, AFAIK. Mas uma fronteira? Certo. :)
cHao

Oh, não podemos adicionar vários conteúdos, consulte Fiddle . Que pena ...
Hugolpz

8

Como você está procurando adicionar espaço entre os elementos, pode precisar de algo tão simples como margin-left ou padding-left. Aqui estão alguns exemplos de http://jsfiddle.net/BGHqn/3/

Isso adicionará 10 pixels à esquerda do elemento do parágrafo

p {
    margin-left: 10px;
 }

ou se você quiser apenas algum preenchimento dentro do seu elemento de parágrafo

p {
    padding-left: 10px;
}

5
/* Most Accurate Setting if you only want
   to do this with CSS Pseudo Element */
p:before { 
   content: "\00a0";
   padding-right: 5px; /* If you need more space b/w contents */
}
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.