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>?

Affar
fonte

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.

Bagunçado
fonte
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.

cletus
fonte
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.

David Hedlund
fonte
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.


fonte
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.

Matt Kellogg
fonte
5

Uma extensão é um elemento de formatação embutido que NÃO possui uma alimentação de linha acima ou abaixo.

A p é um elemento de bloco que TEM uma alimentação de linha implícita acima e abaixo.

http://w3schools.com/tags/default.asp

David Glass
fonte
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 .

Felix Kling
fonte
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.

statenjason
fonte
3

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

Suhasini
fonte
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.

Richard H
fonte
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"

Lakruwan Pathirage
fonte
-6
p {
    float: left;
    margin: 0;
}

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

Gasyoun
fonte