Cela signifie que pour les utiliser sémantiquement, les div doivent être utilisées pour encapsuler des sections d'un document, tandis que les étendues doivent être utilisées pour encapsuler de petites portions de texte, d'images, etc.
Par exemple:
<div>This a large main division, with <span>a small bit</span> of spanned text!</div>
Notez qu'il est illégal de placer un élément de niveau bloc dans un élément en ligne, donc:
<div>Some <span>text that <div>I want</div> to mark</span> up</div>
... est illégal.
EDIT: Depuis HTML5, certains éléments de bloc peuvent être placés à l'intérieur de certains éléments en ligne. Voir la référence MDN ici pour une liste assez claire. Ce qui précède est toujours illégal, car <span>
il accepte uniquement le contenu de phrasé et <div>
est un contenu de flux.
Vous avez demandé des exemples concrets, alors celui-ci est tiré de mon site de bowling, 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, qu'est-ce qui se passe?
En haut de ma page, j'ai une section logique, "l'en-tête". Comme il s'agit d'une section, j'utilise un div (avec un identifiant approprié). À l'intérieur de cela, j'ai quelques sections: la barre d'utilisateur et le titre de la page réelle. Le titre utilise la balise appropriée,
h1
. La barre d'utilisateurs, étant une section, est enveloppée dans un
div
. À l'intérieur de cela, le nom d'utilisateur est enveloppé dans un
span
, afin que je puisse changer le style. Comme vous pouvez le voir, j'ai également enveloppé
span
environ 2 lettres dans le titre - cela me permet de changer leur couleur dans ma feuille de style.
Notez également que HTML5 comprend un large nouvel ensemble d'éléments qui définissent les structures de page communes, telles que l'article, la section, la navigation, etc.
La section 4.4 du projet de travail HTML 5 les énumère et donne des conseils quant à leur utilisation. HTML5 est toujours une spécification fonctionnelle, donc rien n'est encore "final", mais il est très douteux que l'un de ces éléments aille quelque part. Il y a un hack javascript que vous devrez utiliser si vous voulez styliser ces éléments dans une ancienne version d'IE - Vous devez créer un de chaque élément en utilisant document.createElement
avant que l'un de ces éléments soit spécifié dans votre source. Il y a un tas de bibliothèques qui s'occuperont de cela pour vous - une recherche rapide sur Google a révélé html5shiv .
div
etspan
sémantiquement car ils n'ont aucune signification qui leur est attachée.div
est un élément de niveau de bloc générique sans signification tandis quespan
est un élément inline générique sans signification.Juste pour être complet, je vous invite à y penser comme ceci:
<p>
est un paragraphe, an<li>
est un élément de liste, etc., et nous sommes censés utiliser la bonne balise dans le bon but - pas comme dans l'ancien temps où nous indenté en utilisant<blockquote>
si le contenu était une citation ou non.<div>
et<span>
, sinon, les gens recommenceraient à abuser des éléments qui ont un sens.la source
Il existe déjà de bonnes réponses détaillées ici, mais pas d'exemples visuels, alors voici une illustration rapide:
<div>
est une balise de bloc, tandis<span>
qu'une balise en ligne.la source
<div>
est un élément de niveau bloc et<span>
est un élément en ligne.Si vous vouliez faire quelque chose avec du texte en ligne,
<span>
c'est la voie à suivre car il n'introduira pas de sauts de ligne<div>
.Comme noté par d'autres, il y a une sémantique impliquée avec chacun d'eux, plus particulièrement le fait qu'un
<div>
implique une division logique dans le document, semblable à peut-être une section d'un document ou quelque chose, a la:la source
La vraie différence importante est déjà mentionnée dans la réponse de Chris. Cependant, les implications ne seront pas évidentes pour tout le monde.
En tant qu'élément en ligne,
<span>
ne peut contenir que d'autres éléments en ligne. Le code suivant est donc erroné:Le code ci-dessus n'est pas valide. Pour encapsuler des éléments de niveau bloc, un autre élément de niveau bloc doit être utilisé (tel que
<div>
). En revanche,<div>
ne peut être utilisé que dans des endroits où les éléments de niveau bloc sont légaux.De plus, ces règles sont fixées en (X) HTML et ne sont pas altérées par la présence de règles CSS! Les codes suivants sont donc également erronés!
la source
La signification de "l'élément de bloc" est implicite mais n'a jamais été explicitement indiquée. Si nous ignorons toute la théorie (la théorie est bonne), ce qui suit est une comparaison pragmatique. Le suivant:
produit:
Cela montre que non seulement devrait un div pas être en ligne utilisé, il suffit de ne produira pas l'effet désiré.
la source
Comme mentionné dans d'autres réponses, par défaut
div
sera rendu comme un élément de bloc, tandisspan
qu'il sera rendu en ligne dans son contexte. Mais aucun n'a de valeur sémantique; ils existent pour vous permettre d'appliquer un style et une identité à n'importe quel morceau de contenu donné. En utilisant des styles, vous pouvez faire undiv
acte comme unspan
et vice-versa.L' un des styles utiles pour
div
est -inline-block
Exemples:
http://dustwell.com/div-span-inline-block.html
Affichage CSS: inline vs inline-block
Je connais
inline-block
un grand succès dans les projets web de jeux.la source
Div est un élément de bloc et span est un élément en ligne et sa largeur dépend du contenu de lui-même où div ne le fait pas
la source
Je dirais que si vous connaissez un peu d'espagnol pour regarder cette page , où est bien expliqué.
Cependant, une définition rapide serait
div
de diviser des sections etspan
d'appliquer un type de style à un élément dans un autre élément de bloc commediv
.la source
Je voulais juste ajouter un contexte historique à la façon dont il y a eu
span
vsdiv
Histoire de
span
:- Source (w3 wiki)
De l'ébauche RFC qui présente
span
:- Source (IETF Draft)
Histoire de
div
:Spécification HTML 3.2
En un mot, les deux éléments sont nés du besoin d'un conteneur plus sémantique générique. Span a été proposé comme remplacement plus générique d'un
<text>
élément pour styliser le texte. Div a été proposé comme un moyen générique de diviser les pages et a eu l'avantage supplémentaire de remplacer la<center>
balise pour le contenu d'alignement central. Div a toujours été un élément de bloc en raison de son histoire en tant que diviseur de page. La portée a toujours été un élément en ligne car son objectif initial était le style de texte et aujourd'hui, div et span sont tous deux devenus des éléments génériques avec respectivement des propriétés de bloc et d'affichage en ligne par défaut.la source
En HTML, il existe des balises qui ajoutent une structure ou une sémantique au contenu. Par exemple, la
<p>
balise est utilisée pour identifier un paragraphe. Un autre exemple est le<ol>
balise d'une liste ordonnée.Lorsqu'il n'y a pas de balise appropriée disponible en HTML comme indiqué ci-dessus, le
<div>
et<span>
balises sont généralement utilisées.le
<div>
balise est utilisée pour identifier une section / division de niveau bloc d'un document qui a un saut de ligne avant et après.Des exemples d'utilisation des balises div sont les en-têtes, les pieds de page, les navigations, etc. Cependant, en HTML 5, ces balises ont déjà été fournies.
le
<span>
balise est utilisée pour identifier une section / division en ligne d'un document.Par exemple, une balise span peut être utilisée pour ajouter des pictogrammes en ligne à un élément.
la source
Rappelez-vous, fondamentalement, et eux-mêmes ne remplissent aucune fonction non plus. Ils ne sont pas spécifiques aux fonctionnalités uniquement par leurs balises .
Ils ne peuvent être personnalisés qu'avec l'aide de CSS.
Maintenant que j'en viens à votre question:
La balise SPAN avec un certain style sera utile pour conserver une ligne à l'intérieur, par exemple dans un paragraphe, en html. Il s'agit d'une sorte de niveau de ligne ou de niveau d'instruction en HTML.
Exemple:
La fonctionnalité de balise DIV, comme indiqué, ne peut être visible que sur un style, peut contenir de gros morceaux de code HTML.
DIV est au niveau du bloc
Exemple:
Les deux ont leur heure et leur cas quand ils doivent être utilisés, en fonction de vos besoins.
J'espère que la réponse est claire. Je vous remercie.
la source