display CSS property
Baseline
Weitgehend verfügbar
*
Diese Funktion ist gut etabliert und funktioniert auf vielen Geräten und in vielen Browserversionen. Sie ist seit Juli 2015 browserübergreifend verfügbar.
* Einige Teile dieser Funktion werden möglicherweise unterschiedlich gut unterstützt.
Die CSS-Eigenschaft display legt fest, ob ein Element als Block- oder Inline-Box behandelt wird und welches Layout für seine Kindelemente verwendet wird, beispielsweise Flow-Layout, Grid oder Flex.
Formal legt die Eigenschaft display die inneren und äußeren display types eines Elements fest. Der äußere Typ bestimmt die Beteiligung eines Elements am Flow-Layout; der innere Typ bestimmt das Layout der Kindelemente. Einige Werte von display sind vollständig in eigenen Spezifikationen definiert; beispielsweise ist in der CSS-Flexible-Box-Model-Spezifikation definiert, was geschieht, wenn display: flex deklariert wird.
Probieren Sie es aus
display: block;
display: inline flow-root;
display: none;
display: flex;
display: grid;
display: grid-lanes;
<p>
Apply different <code>display</code> values on the dashed orange-bordered
<code>div</code>, which contains three child elements.
</p>
<section class="default-example" id="default-example">
<div class="example-container">
Some text A.
<div id="example-element">
<div class="child">Child 1</div>
<div class="child">Child 2</div>
<div class="child">Child 3</div>
</div>
Some text B.
</div>
</section>
.example-container {
width: 100%;
height: 100%;
}
code {
background: #88888888;
}
#example-element {
border: 3px dashed orange;
}
.child {
display: inline-block;
padding: 0.5em 1em;
background-color: #ccccff;
border: 1px solid #ababab;
color: black;
}
Syntax
/* short display */
display: none;
display: contents;
display: block;
display: flow-root;
display: inline;
display: inline-block;
display: list-item;
display: inline list-item;
display: flex;
display: inline-flex;
display: grid;
display: inline-grid;
display: grid-lanes;
display: inline-grid-lanes;
display: table;
display: inline-table;
/* full display */
display: block flow;
display: block flow-root;
display: inline flow;
display: inline flow-root;
display: block flow list-item;
display: inline flow list-item;
display: block flex;
display: inline flex;
display: block grid;
display: inline grid;
display: block grid-lanes;
display: inline grid-lanes;
display: block table;
display: inline table;
/* global values */
display: inherit;
display: initial;
display: revert;
display: revert-layer;
display: unset;
Die CSS-Eigenschaft display wird mithilfe von Schlüsselwortwerten angegeben.
Gruppierte Werte
Die Schlüsselwortwerte können in sechs Wertkategorien gruppiert werden.
Außen
<display-outside>-
Diese Schlüsselwörter geben den äußeren Anzeigetyp des Elements an, also im Wesentlichen seine Rolle im Flow-Layout:
block-
Das Element erzeugt eine Block-Box und erzeugt im normalen Fluss sowohl vor als auch nach dem Element Zeilenumbrüche.
inline-
Das Element erzeugt eine oder mehrere Inline-Boxen, die weder vor noch nach sich selbst Zeilenumbrüche erzeugen. Im normalen Fluss befindet sich das nächste Element in derselben Zeile, wenn genügend Platz vorhanden ist.
Hinweis:
Wenn eine display-Eigenschaft nur mit einem äußeren Wert angegeben wird (z. B. display: block oder display: inline), ist der innere Wert standardmäßig flow (z. B. display: block flow und display: inline flow).
Hinweis:
Sie können die Einwert-Syntax als Fallback für die Mehrschlüsselwort-Syntax verwenden. Beispielsweise könnte display: inline flex den folgenden Fallback haben:
.container {
display: inline-flex;
display: inline flex;
}
Weitere Informationen finden Sie unter Verwenden der Mehrschlüsselwort-Syntax mit CSS display.
Innen
<display-inside>-
Diese Schlüsselwörter geben den inneren Anzeigetyp des Elements an, der die Art des Formatierungskontexts bestimmt, in dem sein Inhalt angeordnet wird (vorausgesetzt, es handelt sich um ein nicht ersetztes Element). Wenn eines dieser Schlüsselwörter allein als Einzelwert verwendet wird, ist der äußere Anzeigetyp des Elements standardmäßig
block(mit Ausnahme vonruby, das standardmäßiginlineverwendet).flow-
Das Element ordnet seinen Inhalt mithilfe des Flow-Layouts an (Block- und Inline-Layout).
Wenn sein äußerer Anzeigetyp
inlineist und es an einem Block- oder Inline-Formatierungskontext beteiligt ist, erzeugt es eine Inline-Box. Andernfalls erzeugt es eine Block-Box.Abhängig vom Wert anderer Eigenschaften (wie
position,floatoderoverflow) und davon, ob es selbst an einem Block- oder Inline-Formatierungskontext beteiligt ist, richtet es entweder einen neuen Block-Formatierungskontext (BFC) für seinen Inhalt ein oder integriert seinen Inhalt in den Formatierungskontext seines Elternelements. flow-root-
Das Element erzeugt eine Block-Box, die einen neuen Block-Formatierungskontext einrichtet und festlegt, wo die Formatierungswurzel liegt.
table-
Diese Elemente verhalten sich wie HTML-
<table>-Elemente. Es definiert eine Box auf Blockebene. flex-
Das Element verhält sich wie ein Element auf Blockebene und ordnet seinen Inhalt gemäß dem Flexbox-Modell an.
grid-
Das Element verhält sich wie ein Element auf Blockebene und ordnet seinen Inhalt gemäß dem Grid-Modell an.
grid-lanes-
Das Element verhält sich wie ein Element auf Blockebene und ordnet seinen Inhalt mithilfe des Grid-Lanes-Layouts an. Spalten werden durch
grid-template-columnsdefiniert und verhalten sich wie ein striktes Grid, während Elemente in Blockrichtung gepackt werden, um Lücken zwischen Elementen unterschiedlicher Größe zu füllen. Einzelheiten finden Sie unter Grid-Lanes-Layout. ruby-
Das Element verhält sich wie ein Element auf Inline-Ebene und ordnet seinen Inhalt gemäß dem Ruby-Formatierungsmodell an. Es verhält sich wie die entsprechenden HTML-
<ruby>-Elemente.
Hinweis:
Wenn eine display-Eigenschaft nur mit einem inneren Wert angegeben wird (z. B. display: flex oder display: grid), ist der äußere Wert standardmäßig block (z. B. display: block flex und display: block grid).
Listenelement
<display-listitem>-
Das Element erzeugt eine Block-Box für den Inhalt und eine separate Inline-Box für das Listenelement.
Ein einzelner Wert list-item führt dazu, dass sich das Element wie ein Listenelement verhält.
Dieser kann zusammen mit list-style-type und list-style-position verwendet werden.
list-item kann außerdem mit jedem Schlüsselwort <display-outside> sowie den Schlüsselwörtern flow oder flow-root von <display-inside> kombiniert werden.
Hinweis:
Wenn kein innerer Wert angegeben ist, lautet der Standardwert flow.
Wenn kein äußerer Wert angegeben ist, hat die Haupt-Box den äußeren Anzeigetyp block.
Intern
<display-internal>-
Einige Layout-Modelle wie
tableundrubyhaben eine komplexe interne Struktur mit mehreren unterschiedlichen Rollen, die ihre Kindelemente und Nachfahren einnehmen können. Dieser Abschnitt definiert diese „internen“ display-Werte, die nur innerhalb dieses bestimmten Layout-Modus eine Bedeutung haben.table-row-group-
Diese Elemente verhalten sich wie HTML-
<tbody>-Elemente. table-header-group-
Diese Elemente verhalten sich wie HTML-
<thead>-Elemente. -
Diese Elemente verhalten sich wie HTML-
<tfoot>-Elemente. table-row-
Diese Elemente verhalten sich wie HTML-
<tr>-Elemente. table-cell-
Diese Elemente verhalten sich wie HTML-
<td>-Elemente. table-column-group-
Diese Elemente verhalten sich wie HTML-
<colgroup>-Elemente. table-column-
Diese Elemente verhalten sich wie HTML-
<col>-Elemente. table-caption-
Diese Elemente verhalten sich wie HTML-
<caption>-Elemente. ruby-base-
Diese Elemente verhalten sich wie HTML-
<rb>-Elemente. ruby-text-
Diese Elemente verhalten sich wie HTML-
<rt>-Elemente. ruby-base-container-
Diese Elemente werden als anonyme Boxen erzeugt.
ruby-text-container-
Diese Elemente verhalten sich wie HTML-
<rtc>-Elemente.
Box
<display-box>-
Diese Werte bestimmen, ob ein Element überhaupt Anzeige-Boxen erzeugt.
contents-
Diese Elemente erzeugen selbst keine spezifische Box. Sie werden durch ihre Pseudo-Box und die Boxen ihrer Kindelemente ersetzt. Beachten Sie, dass die CSS-Display-Level-3-Spezifikation definiert, wie sich der Wert
contentsauf „ungewöhnliche Elemente“ auswirken soll – Elemente, die nicht ausschließlich durch CSS-Box-Konzepte gerendert werden, wie etwa ersetzte Elemente. Weitere Details finden Sie in Anhang B: Auswirkungen von display: contents auf ungewöhnliche Elemente. none-
Deaktiviert die Anzeige eines Elements, sodass es keinen Einfluss auf das Layout hat (das Dokument wird gerendert, als ob das Element nicht existierte). Die Anzeige aller Nachfahrenelemente wird ebenfalls deaktiviert. Verwenden Sie stattdessen die Eigenschaft
visibility, damit ein Element den Platz einnimmt, den es normalerweise einnehmen würde, ohne tatsächlich etwas zu rendern.
Vorkombiniert
<display-legacy>-
CSS 2 verwendete für die Eigenschaft
displayeine vorkombinierte Syntax mit einem Schlüsselwort, die separate Schlüsselwörter für Varianten desselben Layout-Modus auf Block- und Inline-Ebene erforderte.inline-block-
Das Element erzeugt eine Block-Box, die mit dem umgebenden Inhalt fließt, als wäre sie eine einzelne Inline-Box (ähnlich dem Verhalten eines ersetzten Elements).
Es entspricht
inline flow-root. inline-table-
Der Wert
inline-tablehat keine direkte Entsprechung in HTML. Er verhält sich wie ein HTML-<table>-Element, jedoch als Inline-Box und nicht als Box auf Blockebene. Innerhalb der Tabellen-Box befindet sich ein Kontext auf Blockebene.Es entspricht
inline table. inline-flex-
Das Element verhält sich wie ein Element auf Inline-Ebene und ordnet seinen Inhalt gemäß dem Flexbox-Modell an.
Es entspricht
inline flex. inline-grid-
Das Element verhält sich wie ein Element auf Inline-Ebene und ordnet seinen Inhalt gemäß dem Grid-Modell an.
Es entspricht
inline grid. inline-grid-lanes-
Das Element verhält sich wie ein Element auf Inline-Ebene und ordnet seinen Inhalt mithilfe des Grid-Lanes-Layouts an. Zeilen werden durch
grid-template-rowsdefiniert und verhalten sich wie ein striktes Grid, während Elemente in Inline-Richtung gepackt werden, um Lücken zwischen Elementen unterschiedlicher Größe zu füllen. Einzelheiten finden Sie unter Grid-Lanes-Layout.Es entspricht
inline grid-lanes.
Welche Syntax sollten Sie verwenden?
Das CSS-display-Modul beschreibt eine Mehrschlüsselwort-Syntax für Werte, die Sie mit der Eigenschaft display verwenden können, um äußere und innere Anzeige explizit zu definieren.
Die Einzelwert-Schlüsselwörter (vorkombinierte <display-legacy>-Werte) werden aus Gründen der Abwärtskompatibilität unterstützt.
Mit zwei Werten können Sie beispielsweise einen Inline-Flex-Container wie folgt angeben:
.container {
display: inline flex;
}
Dies kann auch mit dem älteren Einzelwert angegeben werden:
.container {
display: inline-flex;
}
Weitere Informationen zu diesen Änderungen finden Sie im Leitfaden Verwenden der Mehrschlüsselwort-Syntax mit CSS display.
Beschreibung
Die einzelnen Seiten für die verschiedenen Werttypen, die für display festgelegt werden können, enthalten mehrere Beispiele für diese Werte in der Praxis – siehe den Abschnitt Syntax. Lesen Sie außerdem die folgenden Materialien, die die verschiedenen display-Werte ausführlich behandeln.
Mehrschlüsselwortwerte
CSS-Flow-Layout (display: block, display: inline)
display: flex
display: grid
- Grundkonzepte des Grid-Layouts
- Beziehung zu anderen Layout-Methoden
- Linienbasierte Platzierung
- Grid-Vorlagenbereiche
- Layout mit benannten Grid-Linien
- Automatische Platzierung im Grid-Layout
- Ausrichten von Elementen im CSS-Grid-Layout
- Grids, logische Werte und Schreibrichtungen
- CSS-Grid-Layout und Barrierefreiheit
- Umsetzen gängiger Layouts mit Grids
- Grid-Lanes-Layout
display animieren
Unterstützende Browser animieren display mit einem diskreten Animationstyp. Das bedeutet im Allgemeinen, dass die Eigenschaft bei 50 % der Animation zwischen zwei Werten wechselt.
Es gibt eine Ausnahme: beim Animieren zu oder von display: none. In diesem Fall wechselt der Browser zwischen den beiden Werten so, dass der animierte Inhalt während der gesamten Animationsdauer angezeigt wird. Zum Beispiel:
- Beim Animieren von
displayvonnonezublock(oder einem anderen sichtbarendisplay-Wert) wechselt der Wert bei0%der Animationsdauer zublock, damit er durchgehend sichtbar ist. - Beim Animieren von
displayvonblock(oder einem anderen sichtbarendisplay-Wert) zunonewechselt der Wert bei100%der Animationsdauer zunone, damit er durchgehend sichtbar ist.
Dieses Verhalten ist nützlich, um Einblend- und Ausblendanimationen zu erstellen, bei denen Sie beispielsweise einen Container mit display: none aus dem DOM entfernen möchten, ihn jedoch mit opacity ausblenden lassen wollen, statt ihn sofort verschwinden zu lassen.
Wenn Sie display mit CSS-Animationen animieren, müssen Sie den anfänglichen display-Wert in einem expliziten Keyframe angeben, beispielsweise mit 0% oder from. Ein Beispiel finden Sie unter CSS-Animationen verwenden.
Wenn Sie display mit CSS-Transitions animieren, sind zwei zusätzliche Funktionen erforderlich:
@starting-stylestellt Startwerte für Eigenschaften bereit, von denen Sie übergehen möchten, wenn das animierte Element erstmals angezeigt wird. Dies ist erforderlich, um unerwartetes Verhalten zu vermeiden. Standardmäßig werden CSS-Transitions weder bei der ersten Stilaktualisierung eines Elements noch bei einer Änderung desdisplay-Typs vonnonezu einem anderen Typ ausgelöst.transition-behavior: allow-discretemuss in der Deklaration vontransition-property(oder in der Kurzformtransition) festgelegt werden, umdisplay-Transitions zu aktivieren.
Beispiele für Transitions der Eigenschaft display finden Sie auf den Seiten @starting-style und transition-behavior.
Barrierefreiheit
>display: none
Die Verwendung eines display-Werts von none für ein Element entfernt es aus dem Barrierefreiheitsbaum. Dadurch werden das Element und alle seine Nachfahrenelemente nicht mehr von Screenreader-Technologien angekündigt.
Wenn Sie das Element visuell ausblenden möchten, ist es barrierefreier, eine Kombination von Eigenschaften zu verwenden, um es visuell vom Bildschirm zu entfernen, es jedoch weiterhin für unterstützende Technologien wie Screenreader verfügbar zu machen.
Während display: none Inhalt aus dem Barrierefreiheitsbaum ausblendet, werden ausgeblendete Elemente, auf die von den Attributen aria-describedby oder aria-labelledby sichtbarer Elemente verwiesen wird, unterstützenden Technologien bereitgestellt.
display: contents
Aktuelle Implementierungen in einigen Browsern entfernen jedes Element mit einem display-Wert von contents aus dem Barrierefreiheitsbaum (die Nachfahren bleiben jedoch erhalten). Dies führt dazu, dass das Element selbst nicht mehr von Screenreader-Technologien angekündigt wird. Dieses Verhalten ist gemäß der CSS-Spezifikation nicht korrekt.
Tabellen
In einigen Browsern verändert das Ändern des display-Werts eines <table>-Elements in block, grid oder flex dessen Darstellung im Barrierefreiheitsbaum. Dies führt dazu, dass die Tabelle nicht mehr korrekt von Screenreader-Technologien angekündigt wird.
Formale Definition
| Anfangswert | inline |
|---|---|
| Anwendbar auf | alle Elemente |
| Vererbt | Nein |
| Berechneter Wert | wie der angegebene Wert, außer für positionierte und umfließende Elemente und das Wurzelelement. In beiden Fällen kann der berechnete Wert ein Schlüsselwort sein, das nicht dem angegebenen entspricht. |
| Animationstyp | Discrete behavior except when animating to or from none is visible for the entire duration |
Formale Syntax
display =
[ <display-outside> || <display-inside> ] |
<display-listitem> |
<display-internal> |
<display-box> |
<display-legacy> |
grid-lanes |
inline-grid-lanes |
<display-outside> || [ <display-inside> | math ]
<display-outside> =
block |
inline |
run-in
<display-inside> =
flow |
flow-root |
table |
flex |
grid |
ruby
<display-listitem> =
<display-outside>? &&
[ flow | flow-root ]? &&
list-item
<display-internal> =
table-row-group |
table-header-group |
table-footer-group |
table-row |
table-cell |
table-column-group |
table-column |
table-caption |
ruby-base |
ruby-text |
ruby-base-container |
ruby-text-container
<display-box> =
contents |
none
<display-legacy> =
inline-block |
inline-table |
inline-flex |
inline-grid
Beispiele
>Vergleich von display-Werten
In diesem Beispiel haben wir zwei Containerelemente auf Blockebene, jeweils mit drei Inline-Kindelementen. Darunter befindet sich ein Auswahlmenü, mit dem Sie verschiedene display-Werte auf die Container anwenden können. Dadurch können Sie vergleichen, wie sich die verschiedenen Werte auf das Layout des Elements und seiner Kindelemente auswirken.
Wir haben padding und background-color auf die Container und ihre Kindelemente angewendet, damit die Auswirkungen der display-Werte leichter erkennbar sind.
HTML
<article class="container">
<span>First</span>
<span>Second</span>
<span>Third</span>
</article>
<article class="container">
<span>First</span>
<span>Second</span>
<span>Third</span>
</article>
<div>
<label for="display">Choose a display value:</label>
<select id="display">
<option selected>block</option>
<option>block flow</option>
<option>inline</option>
<option>inline flow</option>
<option>flow</option>
<option>flow-root</option>
<option>block flow-root</option>
<option>table</option>
<option>block table</option>
<option>flex</option>
<option>block flex</option>
<option>grid</option>
<option>block grid</option>
<option>grid-lanes</option>
<option>block grid-lanes</option>
<option>list-item</option>
<option>block flow list-item</option>
<option>inline flow list-item</option>
<option>block flow-root list-item</option>
<option>inline flow-root list-item</option>
<option>contents</option>
<option>none</option>
<option>inline-block</option>
<option>inline flow-root</option>
<option>inline-table</option>
<option>inline table</option>
<option>inline-flex</option>
<option>inline flex</option>
<option>inline-grid</option>
<option>inline grid</option>
<option>inline-grid-lanes</option>
<option>inline grid-lanes</option>
</select>
</div>
CSS
html {
font-family: "Helvetica", "Arial", sans-serif;
letter-spacing: 1px;
padding-top: 10px;
}
article {
background-color: red;
}
article span {
background-color: black;
color: white;
margin: 1px;
}
article,
span {
padding: 10px;
border-radius: 7px;
}
article,
div {
margin: 20px;
}
JavaScript
const articles = document.querySelectorAll(".container");
const select = document.querySelector("select");
function updateDisplay() {
articles.forEach((article) => {
article.style.display = select.value;
});
}
select.addEventListener("change", updateDisplay);
updateDisplay();
Ergebnis
Beachten Sie, dass einige Mehrschlüsselwortwerte zur Veranschaulichung hinzugefügt wurden, die den folgenden Entsprechungen entsprechen:
block=block flowinline=inline flowflow=block flowflow-root=block flow-roottable=block tableflex=block flexgrid=block gridlist-item=block flow list-iteminline-block=inline flow-rootinline-table=inline tableinline-flex=inline flexinline-grid=inline grid
Weitere Beispiele finden Sie auf den Seiten zu den einzelnen display-Typen unter Gruppierte Werte.
Spezifikationen
| Spezifikation |
|---|
| CSS Display Module Level 3> # the-display-properties> |
| Scalable Vector Graphics (SVG) 2> # VisibilityControl> |