1167 Stimmen

Was ist der Unterschied zwischen <section> und <div>?

Was ist der Unterschied zwischen <section> y <div> sur HTML ?
Definieren wir nicht in beiden Fällen Abschnitte?

2 Stimmen

1217voto

Paul D. Waite Punkte 92952

<section> bedeutet, dass der darin enthaltene Inhalt gruppiert ist (d. h. sich auf ein einziges Thema bezieht) und als Eintrag in einer Gliederung der Seite erscheinen sollte.

<div> auf der anderen Seite, keine Bedeutung vermittelt abgesehen von denen, die in seinem class , lang y title Attribute.

Also nein: die Verwendung einer <div> definiert keinen Abschnitt in HTML.

Aus der Spezifikation:

<section>

Le site <section> Element stellt einen generischen Abschnitt eines Dokuments oder einer Anwendung dar. Ein Abschnitt ist in diesem Zusammenhang eine thematische Gruppierung von Inhalten. Jeder section gekennzeichnet werden, in der Regel durch die Aufnahme einer Überschrift (Element h1-h6) als untergeordnetes Element der <section> Element.

Beispiele für Abschnitte wären Kapitel, die verschiedenen Registerseiten in einem Dialogfeld mit Registerkarten oder die nummerierten Abschnitte einer Dissertation. Die Homepage einer Website könnte in Abschnitte für eine Einleitung, Nachrichten und Kontaktinformationen unterteilt werden.

...

Le site <section> Element ist kein allgemeines Containerelement. Wenn ein Element nur für Styling-Zwecke oder als Bequemlichkeit für die Skripterstellung benötigt wird, wird den Autoren empfohlen, das <div> Element stattdessen. Als allgemeine Regel gilt, dass das <section> Element ist nur dann sinnvoll, wenn der Inhalt des Elements in der Gliederung des Dokuments explizit aufgeführt wird.

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

<div>

Le site <div> Element hat keine besondere Bedeutung. Es repräsentiert seine Kinder. Es kann mit dem Element class , lang und title Attribute, um die gemeinsame Semantik einer Gruppe von aufeinanderfolgenden Elementen zu kennzeichnen.

Anmerkung: Den Autoren wird dringend empfohlen, sich die <div> als Element der letzten Wahl, wenn kein anderes Element geeignet ist. Verwendung von geeigneteren Elementen anstelle des <div> Element führt zu einer besseren Zugänglichkeit für die Leser und einer leichteren Wartbarkeit für die Autoren.

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

Die Abschnitte sind vor allem für die Landmark-Navigation bei Hilfsmitteln relevant. Damit sie in der Gliederung des Dokuments oder in der Liste der Orientierungspunkte erscheinen, benötigen sie einen Namen, der mit Hilfe von aria-label , aria-labelledby ou title :

<section aria-labelledby="s3-h2">
  <h2 id="s3-h2">Introduction</h2>
  …

Zum Beispiel kann VoiceOver auf dem Mac dann eine Gliederung liefern, um direkt zu diesem Abschnitt zu navigieren.

42 Stimmen

Mehr nachdenken über section vs. div Auch im Lichte dieser Antwort bin ich zu dem Schluss gekommen, dass es sich um genau dasselbe Element handelt. Das W3C sagt ein div "seine Kinder vertritt". Nun, ist das nicht auch das, was die section Element tut? Ja, section impliziert, dass seine Kinder zusammen gruppiert sind, aber allein schon durch das Hinzufügen von Kindern innerhalb einer div sind Sie auch, ja, Zusammenlegung von Gruppen . Zumindest mache ich das so, ich weiß nicht, wie es bei euch ist.

20 Stimmen

@trysis: "Mehr nachdenken über section vs. div " - denken Sie nicht zu viel darüber nach. HTML ist nicht kompliziert. "allein durch die Tatsache, dass man Kinder in eine div sind Sie auch, ja, Zusammenlegung von Gruppen ." Nach der HTML-Spezifikation sind Sie das nicht. Sie verpacken sie in eine div für Styling-Zwecke oder JavaScript-Bequemlichkeit oder etwas anderes, an das das W3C noch nicht gedacht hat, aber es zeigt dem Leser nicht an, dass die untergeordneten Elemente eine Gruppe sind.

0 Stimmen

@trysis: wenn sie sagen, dass ein <div> "seine Kinder repräsentiert", bedeutet dies, dass die <div> fügt seinen Kindern keine zusätzliche Bedeutung hinzu und sollte in Bezug auf die Bedeutung als völlig austauschbar mit seinen Kindern betrachtet werden.

89voto

Quentin Punkte 850700

<section> markiert einen Abschnitt , <div> markiert einen generischen Block ohne zugehörige Semantik.

1 Stimmen

@MarwenTrabelsi - Der Link ist nicht tot. "Section" ist ein englisches Standardwort. Wörterbücher sind verfügbar.

0 Stimmen

@MarwenTrabelsi - Die Begriffe, die Sie "abstrakt und weit" nennen sind die wichtigsten Unterschiede.

0 Stimmen

Dies scheint eine eher "direkte" Antwort zu sein. Und ich meine das auf eine gute Art und Weise. Also kein Unsinn, sondern auf den Punkt. Danke!

78voto

runec Punkte 1587

Nur eine Beobachtung - ich habe keine Unterlagen gefunden, die dies bestätigen.

Wenn ein Abschnitt einen anderen Abschnitt enthält, wird eine h1-Überschrift im inneren Abschnitt in einer kleineren Schrift angezeigt als eine h1-Überschrift im äußeren Abschnitt. Bei der Verwendung von div anstelle von section wird das innere div h1-header als h1 angezeigt.

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

-- die Level2 - Überschrift wird in einer kleineren Schrift angezeigt als die Level1 - Überschrift.

Wenn Sie css verwenden, um h1 Kopfzeile zu färben, wurden die inneren h1 auch gefärbt (verhält sich wie normale h1). Es ist das gleiche Verhalten in Firefox 18, IE 10 und Chrome 28.

4 Stimmen

Wie seltsam... Ich habe einen schnellen Stackblitz erstellt, um dies zu demonstrieren, da es immer noch eine Sache ist. stackblitz.com/edit/angular-h1ayez

0 Stimmen

Genau wie Abschnitte in der Latex-Sprache heißt es dort Unterabschnitt.

2 Stimmen

In den MDN-Dokumenten wird erwähnt, dass mehrere h1 auf einer Seite vermieden werden sollten, auch wenn dies technisch unterstützt wird. Ich vermute, dass dies der Fehler ist (?), der zu dem seltsamen Styling von in Abschnitten verschachtelten h1's führt. In der von @GavinMannion geposteten Demo (danke) werden Sie feststellen, dass alle h2's gleich gestylt sind, unabhängig von der Verschachtelung innerhalb der Abschnitte. TLDR, h1's werden anders behandelt, und Abschnitte sollten nur mit h2's und nicht mit h1's beginnen.

69voto

Subodh Ghulaxe Punkte 17873

<div> Vs <Section>

Runde 1

<div>: Die HTML Element (oder HTML Document Division Element) ist der generische Container für Flow-Inhalte, der an sich nichts repräsentiert. Es kann verwendet werden, um Elemente für Styling-Zwecke zu gruppieren (unter Verwendung der class- oder id-Attribute) oder weil sie Attributwerte teilen, wie z. B. lang. Es sollte nur verwendet werden, wenn kein anderes semantisches Element (wie z.B. <article> ou <nav> ) angemessen ist.

<section>: Die HTML Abschnittselement ( <section> ) steht für einen allgemeinen Abschnitt eines Dokuments, d. h. eine thematische Gruppierung von Inhalten, in der Regel mit einer Überschrift.


Runde 2

<div>: Browser-Unterstützung enter image description here

<section>: Browser-Unterstützung

Die Zahlen in der Tabelle geben die erste Browserversion an, die das Element vollständig unterstützt. enter image description here

In diesem Sinne ist ein div nur aus einer reinen CSS- oder DOM-Perspektive relevant, während ein Abschnitt auch für

11 Stimmen

Die Browserunterstützung ist hier kein Thema, es geht um Semantik. Wenn Sie HTML5 verwenden, werden Sie wahrscheinlich sowieso ein Polyfill verwenden.

0 Stimmen

@JackTuck Und was ist, wenn Sie solche Klötze nicht verwenden wollen?

42voto

srikanth_k Punkte 2497

Im HTML5-Standard wird die <section> Element ist als ein Block zusammengehöriger Elemente definiert.

Le site <div> Element ist als ein Block von Kinderelementen definiert.

1 Stimmen

Ich weiß nicht, warum das jemand abgewertet hat. Kurz, knapp und auf den Punkt gebracht.

1 Stimmen

-1 Es macht keinen Sinn, wie Sie zusammenhängende Elemente in einem Dokument mit hierarchischer Struktur (XML/HTML) gruppieren wollen, Sie können nur Blöcke von Kinderelementen mit einem beliebigen Tag gruppieren.

0 Stimmen

@Svisstack Sie haben Recht, dass jedes umschließende Tag (d. h. nicht selbstschließend/void) Blöcke von untergeordneten Elementen gruppieren kann. Allerdings denke ich, dass es hier eher darum geht, in welcher Beziehung die Kinder zueinander stehen. Haben sie alle einen verwandten Kontext zu vermitteln? Ein Beispiel: Ein Formular, das mehrere Eingaben enthält, würde aus Gründen der Funktionalität und des Designs gruppiert werden. Aber dieses Formular ist kein Abschnitt der Website, sondern ein Teil mit einer Funktion. Nehmen wir nun an, Ihre Seite beschreibt ein Produkt. Verschiedene Teile über das Produkt würden in einem Abschnittselement aufgelistet werden, da die Elemente eine gemeinsame Idee vermitteln.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X