Isso significa que, para usá-los semântica, divs deve ser usado para quebrar seções de um documento, enquanto que extensões devem ser usadas para quebrar pequenas porções de texto, imagens etc.
Por exemplo:
<div>This a large main division, with <span>a small bit</span> of spanned text!</div>
Observe que é ilegal colocar um elemento no nível do bloco dentro de um elemento embutido, portanto:
<div>Some <span>text that <div>I want</div> to mark</span> up</div>
... é ilegal.
EDIT: No HTML5, alguns elementos de bloco podem ser colocados dentro de alguns elementos embutidos. Veja a referência MDN aqui para uma lista bastante clara. O acima exposto ainda é ilegal, pois <span>
só aceita conteúdo de frases e <div>
é conteúdo de fluxo.
Você pediu alguns exemplos concretos, assim como um do meu site de boliche, o BowlSK :
<div id="header">
<div id="userbar">
Hi there, <span class="username">Chris Marasti-Georg</span> |
<a href="/edit-profile.html">Profile</a> |
<a href="https://www.bowlsk.com/_ah/logout?...">Sign out</a>
</div>
<h1><a href="/">Bowl<span class="sk">SK</span></a></h1>
</div>
Ok, o que está havendo?
No topo da minha página, tenho uma seção lógica, o "cabeçalho". Como esta é uma seção, eu uso uma div (com um ID apropriado). Dentro disso, tenho algumas seções: a barra do usuário e o título da página real. O título usa a tag apropriada
h1
,. A barra de usuário, sendo uma seção, está envolvida em um
div
. Dentro disso, o nome de usuário está envolto em a
span
, para que eu possa alterar o estilo. Como você pode ver, também envolvi
span
duas letras no título - isso permite que eu mude a cor delas na minha folha de estilo.
Observe também que o HTML5 inclui um novo conjunto amplo de elementos que definem estruturas comuns de página, como artigo, seção, navegação etc.
A Seção 4.4 do rascunho de trabalho do HTML 5 os lista e fornece dicas sobre seu uso. O HTML5 ainda é uma especificação funcional, portanto nada é "final" ainda, mas é altamente duvidoso que algum desses elementos esteja indo a lugar algum. Existe um truque de javascript que você precisará usar se quiser estilizar esses elementos em uma versão mais antiga do IE - Você precisa criar um de cada elemento usando document.createElement
antes que qualquer um desses elementos seja especificado em sua fonte. Há várias bibliotecas que cuidam disso para você - uma rápida pesquisa no Google apareceu html5shiv .
div
espan
semanticamente, pois eles não têm nenhum significado associado a eles.div
é um elemento genérico sem sentido no nível de bloco, enquantospan
é um elemento inline genérico sem sentido.Apenas por uma questão de perfeição, convido você a pensar assim:
<p>
é um parágrafo, um<li>
item de lista, etc., e devemos usar a tag certa para a finalidade correta - não como nos velhos tempos em que recuado usando<blockquote>
se o conteúdo foi uma citação ou não.<div>
e<span>
, porque, caso contrário, as pessoas voltariam a abusar dos elementos que possuem significados.fonte
Já existem respostas boas e detalhadas aqui, mas nenhum exemplo visual, então aqui está uma rápida ilustração:
<div>
é uma tag de bloco, enquanto<span>
é uma tag embutida.fonte
<div>
é um elemento no nível do bloco e<span>
é um elemento embutido.Se você quiser fazer algo com algum texto embutido,
<span>
é o caminho a seguir, pois ele não apresentará quebras de linha<div>
.Como observado por outros, existem algumas semânticas implícitas em cada uma delas, mais significativamente o fato de que a
<div>
implica uma divisão lógica no documento, semelhante a talvez uma seção de um documento ou algo assim:fonte
A diferença realmente importante já é mencionada na resposta de Chris. No entanto, as implicações não serão óbvias para todos.
Como um elemento embutido,
<span>
pode conter apenas outros elementos embutidos. O código a seguir está, portanto, errado:O código acima não é válido. Para quebrar os elementos no nível do bloco, outro elemento no nível do bloco deve ser usado (como
<div>
). Por outro lado,<div>
só pode ser usado em locais onde os elementos em nível de bloco são legais.Além disso, essas regras são fixadas em (X) HTML e eles estão não alteradas pela presença de regras CSS! Portanto, os seguintes códigos também estão errados!
fonte
O significado de "elemento de bloco" está implícito, mas nunca é declarado explicitamente. Se ignorarmos toda a teoria (teoria é boa), a seguir é apresentada uma comparação pragmática. Os seguintes:
produz:
Isso mostra que não apenas um div não deve ser usado em linha, como também não produz o efeito desejado.
fonte
Conforme mencionado em outras respostas, por padrão
div
, será renderizado como um elemento de bloco, enquantospan
será renderizado inline dentro de seu contexto. Mas nenhum deles tem nenhum valor semântico; eles existem para permitir que você aplique estilo e uma identidade a qualquer bit de conteúdo. Usando estilos, você podediv
agir como umspan
e vice-versa.Um dos estilos úteis para
div
éinline-block
Exemplos:
http://dustwell.com/div-span-inline-block.html
Exibição CSS: inline vs inline-block
Eu me acostumei
inline-block
a um grande sucesso em projetos de jogos na web.fonte
Div é um elemento de bloco e span é um elemento em linha e sua largura depende do conteúdo de si mesmo, onde div não
fonte
Eu diria que se você conhece um pouco de espanhol, consulte esta página , onde é explicado corretamente.
No entanto, uma definição rápida seria
div
dividir seções espan
aplicar algum tipo de estilo a um elemento dentro de outro elemento de bloco comodiv
.fonte
Só queria adicionar algum contexto histórico de como surgiu
span
vsdiv
História de
span
:- Fonte (w3 wiki)
A partir do rascunho da RFC que introduz
span
:- Fonte (Rascunho da IETF)
História de
div
:Especificação do HTML 3.2
Em poucas palavras, ambos os elementos surgiram da necessidade de um contêiner semanticamente mais genérico. O Span foi proposto como uma substituição mais genérica para um
<text>
elemento para estilizar o texto. O Div foi proposto como uma maneira genérica de dividir as páginas e teve o benefício adicional de substituir a<center>
tag pelo conteúdo de alinhamento centralizado. Div sempre foi um elemento de bloco devido ao seu histórico como divisor de página. Span sempre foi um elemento embutido porque seu objetivo original era o estilo de texto e hoje div e span chegaram a ser elementos genéricos com propriedades de exibição padrão de bloco e embutido respectivamente.fonte
No HTML, existem tags que adicionam estrutura ou semântica ao conteúdo. Por exemplo, a
<p>
tag é usada para identificar um parágrafo. Outro exemplo é a<ol>
tag para uma lista ordenada.Quando não há uma tag adequada disponível em HTML, como mostrado acima, as tags
<div>
e<span>
geralmente são utilizadas.A
<div>
tag é usada para identificar uma seção / divisão em nível de bloco de um documento que possui uma quebra de linha antes e depois dela.Exemplos de onde as tags div podem ser usadas são cabeçalhos, rodapés, navegações etc. No entanto, no HTML 5, essas tags já foram fornecidas.
A
<span>
tag é usada para identificar uma seção / divisão embutida de um documento.Por exemplo, uma tag span pode ser usada para adicionar imagens gráficas a um elemento.
fonte
Lembre-se, basicamente, e eles mesmos também não desempenham nenhuma função. Eles não são específicos sobre a funcionalidade apenas por suas tags .
Eles só podem ser personalizados com a ajuda do CSS.
Agora isso vem à sua pergunta:
A tag SPAN, juntamente com algum estilo, será útil em manter uma linha, digamos em um parágrafo, no html. Esse é o tipo de nível de linha ou instrução em HTML.
Exemplo:
A funcionalidade da tag DIV, como foi dito, só pode ser visível com o estilo, pode conter grandes pedaços de código HTML.
DIV é nível de bloco
Exemplo:
Ambos têm seu tempo e caso em que devem ser usados, com base em suas necessidades.
A esperança é clara com a resposta. Obrigado.
fonte