Qual è la differenza tra <section> e <div>?


Risposte:


1037

<section> significa che il contenuto all'interno è raggruppato (vale a dire si riferisce a un singolo tema) e dovrebbe apparire come una voce in una struttura della pagina.

<div>, D'altra parte, non trasmettere alcun significato , a parte qualsiasi trova nella sua class, lange titlegli attributi.

Quindi no: l'uso di a <div>non definisce una sezione in HTML.

Dalle specifiche:

<section>

L' <section>elemento rappresenta una sezione generica di un documento o di un'applicazione. Una sezione, in questo contesto, è un raggruppamento tematico di contenuti. Ciascuno sectiondovrebbe essere identificato, in genere includendo un'intestazione (elemento h1-h6) come figlio <section>dell'elemento.

Esempi di sezioni sono i capitoli, le varie pagine a schede in una finestra di dialogo a schede o le sezioni numerate di una tesi. La home page di un sito Web potrebbe essere suddivisa in sezioni per un'introduzione, notizie e informazioni di contatto.

...

L' <section>elemento non è un elemento contenitore generico. Quando un elemento è necessario solo per scopi di stile o per comodità di scripting, gli autori sono incoraggiati a utilizzare l' <div>elemento. Una regola generale è che l' <section>elemento è appropriato solo se il contenuto dell'elemento sarebbe elencato esplicitamente nella struttura del documento.

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

<div>

L' <div>elemento non ha alcun significato speciale. Rappresenta i suoi figli. Può essere utilizzato con i class, lange titlegli attributi per marcare semantica comune a un gruppo di elementi consecutivi.

Nota: gli autori sono fortemente incoraggiati a vedere l' <div>elemento come un elemento di ultima istanza, per quando nessun altro elemento è adatto. L'uso di elementi più appropriati invece <div>dell'elemento porta a una migliore accessibilità per i lettori e una più facile manutenibilità per gli autori.

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


22
Pensando di più al sectionvs. div, anche alla luce di questa risposta, sono giunto alla conclusione che sono esattamente lo stesso elemento. Il W3C afferma che div"rappresenta i suoi figli". Bene, non è anche quello che fa l' sectionelemento? Sì, sectionimplica che i suoi figli sono raggruppati insieme, ma con l'atto stesso di mettere i bambini dentro a div, li stai anche raggruppando . Almeno il modo in cui lo faccio, non so voi ragazzi.
trysis

9
@trysis: "Pensare di più al sectionvs. div" - non pensarci troppo. HTML non è complicato. "Con l'atto stesso di mettere i bambini dentro a div, li stai anche raggruppando ." Non secondo le specifiche HTML non lo sei. Li stai avvolgendo in una divper scopi di styling, o convenienza JavaScript, o qualcos'altro che il W3C non ha ancora pensato, ma non indica ai lettori che gli elementi figlio sono un gruppo.
Paul D. Waite,

8
@ Matian2040: perché lo scopo di HTML è aggiungere significato al testo, ad esempio <p>This is a paragraph</p>o <h2>This is a second-level heading</h2>. Poiché <div>non aggiunge alcun significato, lo utilizzeresti solo se non esiste un altro elemento HTML che aggiunge un significato appropriato al testo in questione.
Paul D. Waite,

7
Quindi non c'è un singolo vantaggio se si utilizzano sezioni? lol, perché esiste anche allora ?!
Nero,

14
@EdwardBlack: trasmette un significato diverso rispetto ad altri tag. Il significato del trasporto è l'intero punto dell'HTML.
Paul D. Waite,

71

<section>contrassegna una sezione , <div>contrassegna un blocco generico senza semantica associata.


@MarwenTrabelsi - Il link non è morto. "Sezione" è una parola inglese standard. Sono disponibili dizionari.
Quentin,

@MarwenTrabelsi - I termini che chiami "astratti e ampi" sono le differenze principali.
Quentin,

64

<div> Vs <Section>

Turno 1

<div>:L' elemento HTML (o HTML Division Division Element) è il contenitore generico per il contenuto del flusso, che non rappresenta intrinsecamente nulla. Può essere utilizzato per raggruppare elementi a scopi di stile (utilizzando gli attributi class o id) o perché condividono valori di attributi, come lang. Dovrebbe essere usato solo quando nessun altro elemento semantico (come <article>o <nav>) è appropriato.

<section>:L' elemento HTML Section ( <section>) rappresenta una sezione generica di un documento, ovvero un raggruppamento tematico di contenuti, in genere con un'intestazione.


Turno 2

<div>: Supporto per il browser inserisci qui la descrizione dell'immagine

<section>: Supporto per il browser

I numeri nella tabella indicano la prima versione del browser che supporta completamente l'elemento. inserisci qui la descrizione dell'immagine

In tale ottica, un div è rilevante solo dal punto di vista CSS o DOM, mentre una sezione è rilevante anche per la semantica e, in un prossimo futuro, per l'indicizzazione da parte dei motori di ricerca.


10
Il supporto del browser non è un problema qui, riguarda la semantica. Se stai usando HTML5, probabilmente utilizzerai comunque un polyfill.
Jack Tuck,

@JackTuck E se non volessi usare tali kludges?
Lister,

49

Solo un'osservazione: non ho trovato alcuna documentazione a conferma di ciò

Se una sezione contiene un'altra sezione, un'intestazione h1 nella sezione interna viene visualizzata con un carattere più piccolo di un'intestazione h1 nella sezione esterna. Quando si utilizza div anziché la sezione, l'intestazione div h1 interna viene visualizzata come h1.

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

- l'intestazione Level2 - viene visualizzata con un carattere più piccolo dell'intestazione Level1 -.

Quando si utilizza css per colorare l'intestazione h1, anche l'h1 interno è stato colorato (si comporta come h1 normale). È lo stesso comportamento in Firefox 18, IE 10 e Chrome 28.


1
Che strano ... creato un veloce stackblitz per dimostrarlo perché è ancora una cosa stackblitz.com/edit/angular-h1ayez
Gavin Mannion

24

Nello standard HTML5, l' <section>elemento è definito come un blocco di elementi correlati.

L' <div>elemento è definito come un blocco di elementi figlio.


Non so perché qualcuno l'abbia contrassegnato. Breve, dolce e anche il punto.
user6031759,

1
-1 non ha alcun senso, come si desidera raggruppare elementi correlati nel documento di struttura gerarchica (XML / HTML), è possibile raggruppare solo blocchi di elementi figlio utilizzando qualsiasi tag.
Svisstack,

@Svisstack Hai ragione nel dire che qualsiasi tag racchiuso (cioè non autochiudente / vuoto) può raggruppare blocchi di elementi figlio. Anche se penso che questo stia approfondendo la relazione tra i bambini. Hanno tutti un contesto correlato da trasmettere? Ad esempio: un modulo contenente più input verrebbe raggruppato per motivi di funzionalità / stile. Ma questo modulo non è una sezione del sito Web, ma invece un pezzo con una funzione. Ora supponiamo che la tua pagina descriva un prodotto. Diverse parti del prodotto sarebbero elencate in un elemento di sezione perché gli elementi trasmettono un'idea collettiva.
Xandor

20

Fare attenzione a non abusare del tag di sezione in sostituzione di un elemento div . Un tag di sezione dovrebbe definire una regione significativa nel contesto del corpo . Semanticamente, HTML5 ci incoraggia a definire il nostro documento come segue:

<html>
<head></head>
<body>
    <header></header>
    <section>
        <h1></h1>
        <div>
            <span></span>
        </div>
        <div></div>
    </section>
    <footer></footer>
</body>
</html>

Questa strategia consente ai robot Web e agli screen reader automatizzati di comprendere meglio il flusso dei tuoi contenuti. Questo markup definisce chiaramente dove è contenuto il contenuto della tua pagina principale. Naturalmente, le intestazioni e i piè di pagina sono spesso comuni su centinaia se non migliaia di pagine all'interno di un sito Web. Il tag della sezione dovrebbe essere limitato per spiegare dove è contenuto il contenuto unico. All'interno del tag di sezione , dovremmo quindi continuare a eseguire il markup e controllare il contenuto con tag HTML che sono inferiori nella gerarchia, come h1 , div , span , ecc.

Nella maggior parte delle pagine semplici, dovrebbe esserci un solo tag di sezione , non più tag. Tieni inoltre presente che esistono altri tag HTML5 interessanti simili alla sezione . Prendi in considerazione l'utilizzo di articoli , riepiloghi , a parte e altri all'interno del flusso di documenti. Come puoi vedere, questi tag migliorano ulteriormente la nostra capacità di definire le principali aree del documento HTML.


"Nella maggior parte delle pagine semplici, dovrebbe esserci un solo tag di sezione". Puoi fare un esempio non semplice in cui vorresti usare più tag di sezione in una singola pagina?
styfle

7
Vorrei usare il maintag lì dentro, e al suo interno, uno o più sectiontag.
Chazy Chaz,

10

<div>—Il contenitore del flusso generico che tutti conosciamo e amiamo. È un elemento a livello di blocco senza alcun significato semantico aggiuntivo (W3C: Markup, WhatWG)

<section>—Un documento generico o sezione dell'applicazione. A normalmente ha un titolo (titolo) e forse anche un piè di pagina. È un pezzo di contenuto correlato, come una sottosezione di un lungo articolo, una parte importante della pagina (ad esempio la sezione delle notizie sulla homepage) o una pagina nell'interfaccia a schede di una webapp. (W3C: Markup, WhatWG)

Il mio consiglio: div: usato la versione inferiore (penso ancora 4.01) elemento html (molti designer lo hanno gestito). sezione: elemento html recentemente in arrivo (html5).


9

Il tag di sezione fornisce una sintassi più semantica per HTML. div è un tag generico per una sezione. Quando si utilizza il tag di sezione per il contenuto appropriato, può essere utilizzato anche per l'ottimizzazione dei motori di ricerca. il tag di sezione semplifica anche l'analisi del codice HTML. per maggiori informazioni, consultare. http://blog.whatwg.org/is-not-just-a-semantic


1
"Il tag di sezione semplifica anche l'analisi del codice HTML" - eh? Intendi per generare una struttura della pagina?
Paul D. Waite,

7

L'uso <section>può essere più ordinato , aiutare gli screen reader e il SEO mentre <div>è più piccolo in byte e più veloce da digitare

Nel complesso una differenza minima.

Inoltre, non consiglierei di inserire <section>un <section>, invece di inserire un <div>interno a<section>


3

Ecco un suggerimento su come distinguo un paio di elementi html5 recenti nel caso di un'applicazione web (puramente soggettiva).

<section>contrassegna un widget in un'interfaccia utente grafica, mentre <div>è il contenitore dei componenti di un widget come un contenitore che contiene un pulsante, un'etichetta ecc.

<article> raggruppa widget che condividono uno scopo.

<header> è titolo e barra dei menu.

<footer> è la barra di stato.


1

Il <section>tag definisce le sezioni di un documento, ad esempio capitoli, intestazioni, piè di pagina o qualsiasi altra sezione del documento.

mentre:

Il <div>tag definisce una divisione o una sezione in un documento HTML.

Il <div>tag viene utilizzato per raggruppare elementi a blocchi per formattarli con CSS.


2
Intestazioni, piè di pagina e altre sezioni del documento hanno i loro tag semantici. ( <header>, <footer>, <nav>, <article>Etc.)
Oliver

1

<section></section>

L' <section>elemento HTML rappresenta una sezione generica di un documento, ovvero un raggruppamento tematico di contenuti, in genere con un'intestazione. Ciascuno <section>dovrebbe essere identificato, in genere includendo un'intestazione ( <h1>- <h6>element) come figlio <section> dell'elemento. Per dettagli Si prega di seguire il link.

Riferimenti :


<div></div>

L' <div>elemento HTML (o HTML Division Division Element) è il contenitore generico per il contenuto del flusso, che non rappresenta intrinsecamente nulla. Può essere utilizzato per raggruppare elementi a scopi di stile (utilizzando gli attributi class o id) o perché condividono valori di attributi, come lang. Dovrebbe essere usato solo quando nessun altro elemento semantico (come <article>o <nav>) è appropriato.

Riferimenti: - http://www.w3schools.com/tags/tag_div.asp - https://developer.mozilla.org/en/docs/Web/HTML/Element/div


Ecco alcuni link che discutono di più sulle differenze tra loro:

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.