Quando usar <span> em vez do <p>?


95

Como a pergunta indica, se eu tenho algum texto que desejo adicionar ao HTML, quando devo usar <p>e quando devo usar <span>?

Respostas:


92

Você deve ter em mente que o objetivo do HTML é DESCREVER o conteúdo que contém.

Portanto, se você deseja transmitir um parágrafo, faça-o.

Porém, sua comparação não está exatamente correta. A comparação mais direta seria

Quando usar um em <div>vez de um <p>?

como ambos são elementos de nível de bloco.

A <span>é embutido, bem como uma âncora ( <a>), <strong>ênfase ( <em>), etc., então tenha em mente que por sua natureza padrão tanto em html quanto na escrita natural, um parágrafo causará uma quebra antes e depois de si mesmo, como um <div>.

Às vezes, ao estilizar coisas - coisas inline - a <span>é ótimo para dar a você algo para "enganchar" o CSS, mas de outra forma é uma tag vazia sem significado semântico ou estilístico.


7
Ao comparar elementos inline vs. blocos, tome cuidado para não descrever os aspectos visuais. Como diz a especificação do HTML5 , um ppode não necessariamente ser estilizado com quebras de linha ao redor, por exemplo, ele pode ser seguido por um símbolo de pilcrow embutido . Os termos "inline" e "bloquear" também não significam nada para usuários cegos. Em vez disso, faça a distinção entre o conteúdo do fluxo e o conteúdo do fraseado (consulte este link ).
chharvey

3
Além disso, padding-left se comporta de maneira diferente quando pativada span. No parágrafo, o preenchimento afeta todas as linhas (bloco de texto), enquanto que na extensão afeta apenas a primeira linha.
diynevala

95

Semanticamente, você usa <p>marcas para indicar parágrafos. <span>é usado para aplicar estilo CSS e / ou classe (s) a uma seção arbitrária de texto e elementos inline.


13

A <p>tag é um pgráfico e, como tal, é um elemento de bloco (como está, por exemplo, h1e div), enquanto spané um elemento embutido (como, por exemplo, be a)

Os elementos de bloco por padrão criam alguns espaços em branco acima e abaixo de si mesmos, e nada pode ser alinhado próximo a eles, a menos que você defina um floatatributo para eles.

Os elementos embutidos lidam com extensões de texto dentro de um parágrafo. Eles normalmente não têm margens e, como tal, você não pode, por exemplo, definir um widthpara ele.


sim, o span não tem margens e, portanto, é bom como a célula da tabela (td) ter a capacidade de usar marcação html
Igor Fomenko

7

Span é totalmente não semântico. Não tem sentido e serve apenas como elemento para efeitos cosméticos.

Os parágrafos têm significado semântico - eles dizem a uma máquina (como um navegador ou um leitor de tela) que o conteúdo que encapsulam é um bloco de texto e tem o mesmo significado que um parágrafo de texto em um livro.


5

Semanticamente falando, ap é uma tag de parágrafo e deve ser usada para formatar um parágrafo de texto. Uma extensão é uma alteração de formatação embutida que não é tratada semanticamente.



4

Uma explicação prática: Por padrão, <p> </p>adicionará quebras de linha antes e depois do texto incluído (para criar um parágrafo). <span>não faz isso, é por isso que é chamado de inline .


3

A tag p denota um elemento de parágrafo. Tem margens / preenchimento aplicados a ele. Um span é uma tag embutida sem estilo. Uma diferença importante é que p é um elemento de bloco quando span está em linha, o que significa que <p>Hi</p><p>There</p>apareceria em linhas diferentes quando se <span>Hi</span><span>There</span>encerrasse lado a lado.


3

Quando estamos usando texto normal naquele momento, queremos <p>tag. Quando estamos usando texto normal com alguns efeitos naquele momento, queremos <span>tag


2

<span> é uma tag embutida, a <p> é uma tag de bloco, usada para parágrafos. Os navegadores renderizarão uma linha em branco abaixo de um parágrafo, enquanto <span> s serão renderizados na mesma linha.


0

tag é um elemento de nível de bloco, mas tag é elemento embutido. Normalmente usamos a tag span para estilizar dentro dos elementos do bloco. mas você não precisa usar a tag span para o estilo embutido. você tem que fazer é; converter elemento de bloco em elemento embutido usando "display: embutido"


-6
p {
    float: left;
    margin: 0;
}

Não haverá espaçamento, é semelhante ao intervalo.

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.