W3docs

HTML <div> Tag

Erfahren Sie, wie der <div>-Tag HTML-Elemente gruppiert und mit CSS gestaltet wird. Attribute wie class, id und style mit Beispielen.

Der <div>-Tag ist ein Container, der eine Division oder einen Abschnitt definiert. Es handelt sich um ein Block-Level-Element, das den Inhalt selbst nicht beeinflusst, sondern hauptsächlich dazu verwendet wird, HTML-Elemente zu gruppieren, damit sie mit CSS gestaltet oder per Skript manipuliert werden können.

Da <div> ein Block-Level-Element ist, beginnt jedes davon in einer neuen Zeile und dehnt sich auf die verfügbare Breite aus. Es trägt keine eigene semantische Bedeutung — es ist eine generische Box. Verwenden Sie <div>, um block-level Inhalte zu gruppieren; um inline-Inhalte zu gruppieren oder zu gestalten (einige Wörter innerhalb eines Satzes), greifen Sie stattdessen zum Inline-Gegenstück, dem <span>-Tag.

Zwei Absätze, innerhalb eines div mit grünem Hintergrund gruppiert, und ein einzelnes Wort, in einem span mit blauem Text eingeschlossen

Positionierung von Blöcken, die durch den <div>-Tag definiert werden

Tipp

Wir empfehlen, den <div>-Tag nur zu verwenden, wenn kein anderes semantisches Element aus HTML5 (wie <nav>, <main> oder <article>) geeignet ist.

Da <div> ein Block-Level-Element ist, wird vor und nach ihm ein Zeilenumbruch eingefügt.

Es ist möglich, jedes HTML-Element innerhalb eines <div>-Tags zu platzieren, einschließlich eines weiteren <div>.

Gefahr

Block-Level-Elemente wie <div> können nicht innerhalb von <p>-Tags verschachtelt werden, da der Absatz an der Stelle unterbrochen wird, an der der <div>-Tag platziert ist.

Um Stile innerhalb eines Absatzes anzuwenden, verwenden Sie den <span>-Tag, der für Inline-Elemente genutzt wird.

Syntax

Der <div>-Tag kommt paarweise vor. Der Inhalt wird zwischen dem öffnenden (<div>) und schließenden (</div>) Tag geschrieben.

Beispiel des HTML-<div>-Tags:

Beispiel des HTML-<div>-Tags

<!DOCTYPE html>
<html>
  <head>
    <title>The &lt;div&gt; Tag</title>
  </head>
  <body>
    <h1> The &lt;div&gt; Tag </h1>
    <div style="background-color:#8ebf42">
      <p>We use the &lt;div&gt; tag to group two paragraphs for applying a background to the text, and to add color to this
        <span style="color:#1c87c9">word</span> we place it within &lt;span&gt; tag.</p>
      <p> Pay attention, that the &lt;div&gt; tag is a block-level element, so a line break is placed before and after
        it.</p>
    </div>
  </body>
</html>

<div> vs. semantische Elemente

Ein <div> ist das richtige Werkzeug, wenn Sie lediglich eine generische Box benötigen, an der Stile oder Skripte angehängt werden sollen. Repräsentiert die Box jedoch einen bedeutungsvollen Bereich der Seite — Navigation, eine Kopfzeile, ein Artikel — bevorzugen Sie das passende HTML5-semantische Element. Semantische Tags beschreiben, was der Inhalt ist, was Suchmaschinen, Screenreadern und anderen Entwicklern hilft, Ihr Markup zu verstehen.

Vergleichen Sie dieselbe Struktur auf zwei verschiedene Weisen geschrieben:

<!-- Before: generic divs, no meaning -->
<div class="header">...</div>
<div class="nav">...</div>
<div class="main">...</div>
<div class="footer">...</div>

<!-- After: semantic elements, self-describing -->
<header>...</header>
<nav>...</nav>
<main>...</main>
<footer>...</footer>

Beide werden standardmäßig identisch dargestellt, aber die zweite Version ist deutlich barrierefreier und wartungsfreundlicher.

Warnung

Vorsicht vor "Div-Suppe". Alles in verschachtelten <div>-Elementen zu verpacken — <div class="nav">, <div class="header"> und so weiter — erzeugt Markup, das schwer zu lesen ist und unterstützenden Technologien nichts bietet. Fragen Sie sich, bevor Sie ein <div> hinzufügen, ob <nav>, <header>, <main>, <article>, <section> oder <footer> besser passt.

<div> vs. <span>

Die Tags <div> und <span> sind beide generische, bedeutungslose Container — der Unterschied liegt in der Box, die sie erzeugen:

  • <div> ist block-level. Es beginnt in einer neuen Zeile, füllt die verfügbare Breite aus und wird verwendet, um größere Inhaltsbereiche zu gruppieren (Absätze, Listen, andere Divs).
  • <span> ist inline. Es fließt innerhalb einer Textzeile und wird verwendet, um einen kleinen Inhaltsteil wie ein Wort oder eine Phrase zu gestalten oder zu adressieren.
<p>The word <span style="color:#1c87c9">highlighted</span> sits inside the text flow.</p>

<div style="background-color:#8ebf42">
  <p>This whole block is grouped and given a background.</p>
</div>

Als Faustregel gilt: Greifen Sie zu <div>, um block-level Inhalte zu gruppieren, und zu <span>, um inline-Inhalte einzuschließen.

Wenn wir Layouts erstellen, arbeiten wir mit mehreren Blöcken, die durch den <div>-Tag definiert werden. Die Positionierung dieser Blöcke ist das Herzstück des Layouts: Elemente in korrekten relativen Positionen über alle Bildschirmgrößen hinweg zu platzieren ist eine der wichtigsten Aufgaben.

Je nach Inhalt und Zielen der Seite können wir verschiedene Techniken (oder deren Kombinationen) einsetzen, um den Platz jedes Blocks zu bestimmen. Für moderne Layouts sind die zwei Werkzeuge, nach denen Sie zuerst greifen sollten, CSS Grid (für zweidimensionale Zeilen-und-Spalten-Layouts) und Flexbox (für eindimensionale Zeilen oder Spalten). Die älteren Techniken unten — Floats, negative Margins und absolute Positionierung — funktionieren zwar noch, sind aber heute selten die beste Wahl.

CSS Grid

CSS Grid ist der moderne Standardweg, um zweidimensionale Layouts zu erstellen — also Layouts, die <div>-Blöcke gleichzeitig in Zeilen und Spalten anordnen. Sie definieren ein Grid auf dem Container mit display: grid und beschreiben dessen Tracks; die untergeordneten Blöcke fließen dann in die Zellen.

Beispiel des HTML-<div>-Tags mit CSS Grid:

Ein Beispiel des HTML-<div>-Tags mit CSS Grid

<!DOCTYPE html>
<html>
  <head>
    <title>Title of the document</title>
    <style>
      .grid-container {
        display: grid;
        grid-template-columns: 1fr 1fr 1fr;
        gap: 10px;
        padding: 10px;
        background-color: #1faadb;
      }
      .grid-container > div {
        height: 60px;
        border-radius: 3px;
        background-color: #8ebf42;
      }
    </style>
  </head>
  <body>
    <div class="grid-container">
      <div></div>
      <div></div>
      <div></div>
      <div></div>
      <div></div>
      <div></div>
    </div>
  </body>
</html>

Dieses einzelne grid-template-columns: 1fr 1fr 1fr erstellt drei gleiche Spalten, und die sechs <div>-Blöcke umbrechen automatisch in zwei Zeilen.

Flexbox

Wenn Sie Elemente nur entlang einer einzigen Achse — einer Zeile oder einer Spalte — anordnen möchten, ist Flexbox das richtige Werkzeug. In modernen Websites werden float-basierte Layouts durch Flexbox und Grid ersetzt. Die Hauptidee hinter Flexbox ist, dass Sie damit die Ausrichtung, Richtung, Reihenfolge und Größe der Elemente innerhalb des Containers steuern können.

Beispiel einer Flexbox mit dem HTML-<div>-Tag:

Ein Beispiel des HTML-<div>-Tags mit Flexbox

<!DOCTYPE html>
<html>
  <head>
    <title>Title of the document</title>
    <style>
      .flex-container {
        display: flex;
        align-items: center; /* Use another value to see the result */
        width: 100%;
        height: 200px;
        background-color: #1faadb;
      }
      .flex-container > div {
        width: 25%;
        height: 60px;
        margin: 5px;
        border-radius: 3px;
        background-color: #8ebf42;
      }
    </style>
  </head>
  <body>
    <div class="flex-container">
      <div></div>
      <div></div>
      <div></div>
    </div>
  </body>
</html>

CSS Float-Eigenschaft

Die CSS-Eigenschaft float, oder "Floats", ermöglicht es Elementen, nebeneinander oder getrennt voneinander zu erscheinen, wodurch wir verschiedene Layout-Arten erstellen können, darunter mehrspaltige Seiten, Seitenleisten, Grids usw.

Beispiel des HTML-<div>-Tags mit der CSS Float-Eigenschaft:

Beispiel des HTML-<div>-Tags mit der CSS Float-Eigenschaft

<!DOCTYPE html>
<html>
  <head>
    <title>Title of the document</title>
    <style>
      .content {
        overflow: auto;
        border: 3px solid #666;
      }
      .content div {
        padding: 10px;
      }
      .content a {
        color: darkblue;
      }
      .blue {
        float: right;
        width: 45%;
        background-color: #1faadb;
      }
      .green {
        float: left;
        width: 35%;
        background-color: #8ebf42;
      }
    </style>
  </head>
  <body>
    <div class="content">
      <div class="blue">
        <p>This is some paragraph inside div tag.</p>
        <a href="#">This is some hyperlink inside div tag.</a>
        <ul>
          <li>List item 1</li>
          <li>List item 2</li>
        </ul>
      </div>
      <div class="green">
        <p>This is some paragraph inside div tag.</p>
        <ol>
          <li>List item 1</li>
          <li>List item 2</li>
        </ol>
      </div>
    </div>
  </body>
</html>

Ergebnis

Beispiel des div-Tags mit der CSS Float-Eigenschaft

Negative Margins (veraltete Technik)

Info

Negative Margins sind ein Nischen-Positionierungstrick, der größtenteils veraltet ist. Für neue Layouts bevorzugen Sie CSS Grid oder Flexbox, die dieselben Überlappungen und Versätze weitaus vorhersehbarer erreichen. Dieses Beispiel dient als Referenz.

Negative Margins können sowohl auf statische als auch auf gefloatete Elemente angewendet werden, um Blöcke näher zusammenzuziehen oder sie überlappen zu lassen.

Beispiel für negative Margins:

Beispiel des HTML-<div>-Tags mit negativen Margins

<!DOCTYPE html>
<html>
  <head>
    <title>Title of the document</title>
    <style>
      .content div {
        padding: 2%;
      }
      .content a {
        color: darkblue;
      }
      .main-content {
        width: 30%;
        margin-left: 32%;
      }
      .blue {
        width: 25%;
        margin-top: -10%;
        background-color: #1faadb;
      }
      .green {
        width: 20%;
        margin: -35% auto auto 70%;
        background-color: #8ebf42;
      }
    </style>
  </head>
  <body>
    <div class="content">
      <div class="main-content">
        <a href="#">This is some hyperlink inside div tag.</a>
      </div>
      <div class="blue">
        <p>This is some paragraph inside div tag.</p>
        <a href="#">This is some hyperlink inside div tag.</a>
        <ul>
          <li>List item 1</li>
          <li>List item 2</li>
        </ul>
      </div>
      <div class="green">
        <p>This is some paragraph inside div tag.</p>
        <ol>
          <li>List item 1</li>
          <li>List item 2</li>
        </ol>
      </div>
    </div>
  </body>
</html>

Relative+absolute Positionierung

Wenn Sie ein div relativ zu einem bestimmten Element positionieren möchten, können Sie eine Kombination aus position: relative und position: absolute verwenden.

Beispiel der relativen+absoluten Positionierung des HTML-<div>-Tags:

Ein Beispiel des HTML-<div>-Tags mit der CSS position-Eigenschaft

<!DOCTYPE html>
<html>
  <head>
    <title>Title of the document</title>
    <style>
      .content { 
        position: relative; 
        height: 400px;
        border: 1px solid #666;
      }
      .content div { 
        position: absolute; 
        width: 35%; 
        padding: 10px; 
      }
      .blue { 
        right: 20px;
        bottom: 0;
        background-color: #1faadb; 
      }
      .green { 
        top: 10px; 
        left: 15px; 
        background-color: #8ebf42; 
      }
    </style>
  </head>
  <body>
    <div class="content">
      <div class="blue">
        <p>This is some paragraph inside div tag.</p>
      </div>
      <div class="green">
        <p>This is some paragraph inside div tag.</p>
      </div>
    </div>
  </body>
</html>
Gefahr

position: relative hat keinen Einfluss auf die Positionierung von Elementen im normalen Fluss, sofern keine Versatzwerte hinzugefügt werden.

Attribute

Der <div>-Tag hat keine eigenen Attribute. In der Praxis stützt er sich auf die globalen Attribute — am häufigsten id, class, style, data-* und aria-* — um gestaltet, geskriptet oder barrierefrei gemacht zu werden. Er unterstützt außerdem die Event-Attribute.

AttributWertBeschreibung
alignleft right center justifyVeraltet. Wurde verwendet, um den Inhalt innerhalb eines <div>-Tags auszurichten. Es wird in HTML5 nicht mehr unterstützt — verwenden Sie stattdessen die CSS text-align-Eigenschaft.

Übungen

Übung
Was ist die primäre Funktion des HTML-div-Tags?
Was ist die primäre Funktion des HTML-div-Tags?
Was this page helpful?