1090 votes

Quelle est la différence entre <section> et <div> ?

Quelle est la différence entre <section> y <div> en HTML ?
Ne définissons-nous pas des sections dans les deux cas ?

1 votes

1161voto

Paul D. Waite Points 35456

<section> signifie que le contenu qu'il contient est groupé (c'est-à-dire qu'il se rapporte à un thème unique) et qu'il doit apparaître comme une entrée dans un plan de la page.

<div> d'autre part, ne transmet aucun sens en dehors de tout ce qui se trouve dans son class , lang et title attributs.

Donc non : utiliser un <div> ne définit pas une section en HTML.

De la spécification :

<section>

Le site <section> représente une section générique d'un document ou d'une application. Dans ce contexte, une section est un regroupement thématique de contenu. Chaque élément section doit être identifié, généralement en incluant un titre (élément h1-h6) comme enfant de l'élément <section> élément.

Les chapitres, les différentes pages à onglets d'une boîte de dialogue à onglets ou les sections numérotées d'une thèse sont des exemples de sections. La page d'accueil d'un site Web pourrait être divisée en sections pour l'introduction, les nouvelles et les informations de contact.

...

Le site <section> n'est pas un élément conteneur générique. Lorsqu'un élément n'est nécessaire qu'à des fins de style ou de commodité pour les scripts, les auteurs sont encouragés à utiliser l'attribut <div> à la place. En règle générale, l'élément <section> n'est approprié que si le contenu de l'élément doit figurer explicitement dans le plan du document.

( https://www.w3.org/TR/html/sections.html#the-section-element )

<div>

Le site <div> n'a pas du tout de signification particulière. Il représente ses enfants. Il peut être utilisé avec l'élément class , lang et title pour marquer la sémantique commune à un groupe d'éléments consécutifs.

Note : Les auteurs sont vivement encouragés à consulter le <div> comme un élément de dernier recours, lorsqu'aucun autre élément ne convient. L'utilisation d'éléments plus appropriés au lieu de l'élément <div> permet d'améliorer l'accessibilité pour les lecteurs et de faciliter la maintenance pour les auteurs.

( https://www.w3.org/TR/html/grouping-content.html#the-div-element )

34 votes

Réfléchir davantage sur section vs. div y compris à la lumière de cette réponse, j'en suis venu à la conclusion qu'il s'agit exactement du même élément. Le W3C dit qu'un div "représente ses enfants". Eh bien, n'est-ce pas aussi ce que le section élément le fait ? Oui, section implique que ses enfants soient regroupés, mais par le simple fait de mettre des enfants à l'intérieur d'un élément de type div vous l'êtes aussi, oui, les regrouper . Du moins de la manière dont je le fais, je ne sais pas pour vous les gars.

15 votes

@trysis : "Penser davantage à section vs. div "N'y pensez pas trop. Le HTML n'est pas compliqué. " - par le simple fait de mettre des enfants à l'intérieur d'un fichier div vous l'êtes aussi, oui, les regrouper ." Selon la spécification HTML, ce n'est pas le cas. Vous les enveloppez dans un div pour des raisons de style, ou de commodité JavaScript, ou quelque chose d'autre auquel le W3C n'a pas encore pensé, mais qui n'indique pas aux lecteurs que les éléments enfants constituent un groupe.

0 votes

@trysis : quand ils disent un <div> "représente ses enfants", ils signifient que le <div> n'ajoute aucune signification supplémentaire à ses enfants, et en termes de signification, elle doit être considérée comme entièrement interchangeable avec ses enfants.

84voto

Quentin Points 325526

<section> marque un section , <div> marque un bloc générique sans sémantique associée.

1 votes

@MarwenTrabelsi - Le lien n'est pas mort. "Section" est un mot anglais standard. Des dictionnaires sont disponibles.

0 votes

MarwenTrabelsi - Les termes que vous appelez "abstrait et large". sont les principales différences.

0 votes

Cela semble être une réponse plus "dans ta face". Et je le dis dans le bon sens. Pas de bêtises, mais un point c'est tout. Merci.

70voto

runec Points 51

C'est juste une observation - je n'ai pas trouvé de documentation corroborant cela.

Si une section contient une autre section, un en-tête h1- dans la section intérieure est affiché dans une police plus petite qu'un en-tête h1- dans la section extérieure. Si vous utilisez div au lieu de section, le h1-header de la section intérieure est affiché comme h1.

<section>
  <h1>Level1</h1>
  some text
  <section>
    <h1>Level2</h1>
    some more text
  </section>
</section>

-- l'en-tête du niveau 2 est affiché dans une police plus petite que celle de l'en-tête du niveau 1.

Lorsque l'on utilise du css pour colorer l'en-tête h1, le h1 interne est également coloré (se comporte comme un h1 normal). C'est le même comportement dans Firefox 18, IE 10 et Chrome 28.

4 votes

C'est très bizarre... j'ai créé un rapide stackblitz pour faire une démonstration, car c'est toujours d'actualité. stackblitz.com/edit/angular-h1ayez

0 votes

Exactement comme les sections dans le langage Latex, c'est ce qu'on appelle une sous-section.

1 votes

La documentation du MDN indique qu'il faut éviter de placer plusieurs éléments de type h1 dans une même page, même si cela est techniquement possible. J'imagine que c'est le bogue ( ?) qui entraîne le style étrange des h1 imbriqués dans des sections. Dans la démo postée par @GavinMannion (merci), vous noterez que tous les h2 sont stylisés de la même manière, quel que soit le niveau d'imbrication dans les sections. TLDR, les h1 sont traités différemment, et les sections ne devraient commencer que par des h2 plutôt que des h1.

68voto

Subodh Ghulaxe Points 2346

<div> Vs <Section>

Round 1

<div>: Le site HTML L'élément (ou élément de division du document HTML) est le conteneur générique du contenu du flux, qui ne représente rien en soi. Il peut être utilisé pour regrouper des éléments à des fins de style (à l'aide des attributs class ou id), ou parce qu'ils partagent des valeurs d'attributs, comme lang. Il ne doit être utilisé que lorsqu'aucun autre élément sémantique (comme l'élément <article> ou <nav> ) est approprié.

<section>: Le site HTML Élément de section ( <section> ) représente une section générique d'un document, c'est-à-dire un regroupement thématique de contenu, généralement avec un titre.


Round 2

<div>: Support des navigateurs enter image description here

<section>: Support des navigateurs

Les chiffres du tableau indiquent la première version du navigateur qui prend pleinement en charge l'élément. enter image description here

Dans cette optique, un div n'est pertinent que d'un point de vue purement CSS ou DOM, alors qu'une section l'est aussi pour la sémantique et, dans un avenir proche, pour l'indexation par les moteurs de recherche.

11 votes

La prise en charge des navigateurs n'est pas un problème ici, c'est une question de sémantique. Si vous utilisez HTML5, vous utiliserez probablement un polyfill de toute façon.

0 votes

@JackTuck Et si vous ne voulez pas utiliser de tels kludges ?

10voto

pooamlairaj Points 1007

La balise section fournit une syntaxe plus sémantique pour le html. div est une balise générique pour une section. Lorsque vous utilisez la balise section pour un contenu approprié, vous pouvez également l'utiliser pour l'optimisation des moteurs de recherche. La balise section facilite également l'analyse du code html. Pour plus d'informations, reportez-vous à la section. http://blog.whatwg.org/is-not-just-a-semantic

1 votes

"La balise section facilite également l'analyse html" - eh ? Voulez-vous dire pour générer un plan de la page ?

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X