display
Baseline Widely available *
This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.
* Some parts of this feature may have varying levels of support.
Die display
CSS-Eigenschaft legt fest, ob ein Element als Block- oder Inline-Box behandelt wird und welches Layout für seine Kinder verwendet wird, wie z.B. Flowlayout, Grid oder Flex.
Formal setzt die display
-Eigenschaft die inneren und äußeren Displaytypen eines Elements. Der äußere Typ legt die Teilnahme eines Elements am Fluss-Layout fest; der innere Typ legt das Layout der Kinder fest. Einige Werte von display
sind vollständig in ihren eigenen Spezifikationen definiert; zum Beispiel wird das Detail dessen, was passiert, wenn display: flex
deklariert wird, in der Spezifikation des CSS Flexible Box Models definiert.
Probieren Sie es aus
display: block;
display: inline-block;
display: none;
display: flex;
display: grid;
<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: #8888;
}
#example-element {
border: 3px dashed orange;
}
.child {
display: inline-block;
padding: 0.5em 1em;
background-color: #ccccff;
border: 1px solid #ababab;
color: black;
}
Syntax
/* precomposed values */
display: block;
display: inline;
display: inline-block;
display: flex;
display: inline-flex;
display: grid;
display: inline-grid;
display: flow-root;
/* Box suppression */
display: none;
display: contents;
/* multi-keyword syntax */
display: block flex;
display: block flow;
display: block flow-root;
display: block grid;
display: inline flex;
display: inline flow;
display: inline flow-root;
display: inline grid;
/* other values */
display: table;
display: table-row; /* all table elements have an equivalent CSS display value */
display: list-item;
/* Global values */
display: inherit;
display: initial;
display: revert;
display: revert-layer;
display: unset;
Die CSS-Eigenschaft display
wird unter Verwendung von Schlüsselwortwerten angegeben.
Gruppierte Werte
Die Schlüsselwortwerte können in sechs Wertkategorien gruppiert werden.
Outside
<display-outside>
-
Diese Schlüsselwörter spezifizieren den äußeren Displaytyp des Elements, was im Wesentlichen seine Rolle im Fluss-Layout ist:
block
-
Das Element generiert eine Blockbox, die sowohl vor als auch nach dem Element Zeilenumbrüche erzeugt, wenn es im normalen Fluss ist.
inline
-
Das Element erzeugt eine oder mehrere Inline-Boxen, die weder vor noch nach sich selbst Zeilenumbrüche erzeugen. Im normalen Fluss wird das nächste Element in derselben Zeile sein, wenn Platz vorhanden ist.
Hinweis:
Wenn Browser, die die Mehrfach-Schlüsselwort-Syntax unterstützen, eine Anzeigeeigenschaft antreffen, die nur einen äußeren Wert hat (z.B. display: block
oder display: inline
), wird der innere Wert auf flow
gesetzt (z.B. display: block flow
und display: inline flow
).
Hinweis:
Um sicherzustellen, dass Layouts in älteren Browsern funktionieren, können Sie die Ein-Wert-Syntax verwenden, z.B. display: inline flex
könnte den folgenden Fallback haben:
.container {
display: inline-flex;
display: inline flex;
}
Siehe Using the multi-keyword syntax with CSS display für weitere Informationen.
Inside
<display-inside>
-
Diese Schlüsselwörter geben den inneren Displaytyp des Elements an, der den Typ des Formatierungskontexts definiert, in dem seine Inhalte layoutiert werden (vorausgesetzt, es handelt sich um ein nicht ersetztes Element):
flow
-
Das Element layoutiert seine Inhalte unter Verwendung des Flusslayouts (Block-und-Inline-Layout).
Wenn sein äußerer Displaytyp
inline
ist und es an einem Block- oder Inline-Formatierungskontext teilnimmt, erzeugt es eine Inline-Box. Andernfalls erzeugt es eine Block-Box.Abhängig vom Wert anderer Eigenschaften (wie
position
,float
oderoverflow
) und davon, ob es selbst an einem Block- oder Inline-Formatierungskontext teilnimmt, etabliert es entweder einen neuen Block-Formatierungskontext (BFC) für seine Inhalte oder integriert seine Inhalte in seinen übergeordneten Formatierungskontext. flow-root
-
Das Element erzeugt eine Block-Box, die einen neuen Block-Formatierungskontext etabliert und bestimmt, wo die Formatierungsschicht liegt.
table
-
Diese Elemente verhalten sich wie HTML
<table>
Elemente. Es definiert eine Blockebenen-Box. flex
-
Das Element verhält sich wie ein Blockebenen-Element und layoutiert seinen Inhalt gemäß dem Flexbox-Modell.
grid
-
Das Element verhält sich wie ein Blockebenen-Element und layoutiert seinen Inhalt gemäß dem Grid-Modell.
ruby
-
Das Element verhält sich wie ein Inline-Element und layoutiert seinen Inhalt gemäß dem Ruby-Formatierungsmodell. Es verhält sich wie die entsprechenden HTML
<ruby>
Elemente.
Hinweis:
Wenn Browser, die die Mehrfach-Schlüsselwort-Syntax unterstützen, eine Anzeigeeigenschaft antreffen, die nur einen inneren Wert hat (z.B. display: flex
oder display: grid
), wird der äußere Wert auf block
gesetzt (z.B. display: block flex
und display: block grid
).
List Item
<display-listitem>
-
Das Element generiert eine Block-Box für den Inhalt und eine separate Listenitems-Inline-Box.
Ein einzelner Wert von list-item
verursacht, dass das Element sich wie ein Listenpunkt verhält.
Dies kann zusammen mit list-style-type
und list-style-position
verwendet werden.
list-item
kann auch mit jedem <display-outside>
Schlüsselwort und dem flow
oder flow-root
<display-inside>
Schlüsselwort kombiniert werden.
Hinweis:
In Browsern, die die Mehrfach-Schlüsselwort-Syntax unterstützen, wird, wenn kein innerer Wert angegeben ist, auf flow
zurückgesetzt.
Wenn kein äußerer Wert angegeben ist, hat die Hauptbox einen äußeren Anzeigetyp von block
.
Internal
<display-internal>
-
Einige Layoutmodelle wie
table
undruby
haben eine komplexe innere Struktur mit mehreren verschiedenen Rollen, die ihre Kinder und Nachfahren füllen können. Dieser Abschnitt definiert diese "internen" Anzeigewerte, die nur innerhalb dieses speziellen Layoutmodus Bedeutung haben.table-row-group
-
Diese Elemente verhalten sich wie
<tbody>
HTML-Elemente. table-header-group
-
Diese Elemente verhalten sich wie
<thead>
HTML-Elemente. -
Diese Elemente verhalten sich wie
<tfoot>
HTML-Elemente. table-row
-
Diese Elemente verhalten sich wie
<tr>
HTML-Elemente. table-cell
-
Diese Elemente verhalten sich wie
<td>
HTML-Elemente. table-column-group
-
Diese Elemente verhalten sich wie
<colgroup>
HTML-Elemente. table-column
-
Diese Elemente verhalten sich wie
<col>
HTML-Elemente. table-caption
-
Diese Elemente verhalten sich wie
<caption>
HTML-Elemente. ruby-base
-
Diese Elemente verhalten sich wie
<rb>
HTML-Elemente. ruby-text
-
Diese Elemente verhalten sich wie
<rt>
HTML-Elemente. ruby-base-container
-
Diese Elemente werden als anonyme Boxen generiert.
ruby-text-container
-
Diese Elemente verhalten sich wie
<rtc>
HTML-Elemente.
Box
<display-box>
-
Diese Werte definieren, ob ein Element überhaupt Anzeigeboxen generiert.
contents
-
Diese Elemente erzeugen selbst keine spezifische Box. Sie werden durch ihre Pseudobox und ihre Kinderboxen ersetzt. Bitte beachten Sie, dass die CSS Display Level 3-Spezifikation definiert, wie der
contents
-Wert sich auf "ungewöhnliche Elemente" auswirken sollte – Elemente, die nicht rein durch CSS-Box-Konzepte gerendert werden, wie z.B. ersetzte Elemente. Weitere Details finden Sie in Anhang B: Effects of display: contents on Unusual Elements. none
-
Schaltet die Anzeige eines Elements aus, sodass es keine Auswirkungen auf das Layout hat (das Dokument wird gerendert, als ob das Element nicht existieren würde). Alle Nachfahrelemente haben ebenfalls ihre Anzeige ausgeschaltet. Um ein Element den Platz einnehmen zu lassen, den es normalerweise einnehmen würde, ohne jedoch tatsächlich etwas zu rendern, verwenden Sie stattdessen die
visibility
-Eigenschaft.
Precomposed
<display-legacy>
-
CSS 2 verwendete eine Ein-Schlüsselwort, vorgefertigte Syntax für die
display
-Eigenschaft, die separate Schlüsselwörter für block- und inline-Ebenenvarianten desselben Layoutmodus erforderte.inline-block
-
Das Element erzeugt eine Block-Box, die mit dem umgebenden Inhalt so geflossen wird, als ob sie eine einzelne Inline-Box wäre (sich wie ein ersetztes Element verhalten würde).
Es ist gleichbedeutend mit
inline flow-root
. inline-table
-
Der
inline-table
-Wert hat keine direkte Entsprechung in HTML. Es verhält sich wie ein HTML<table>
-Element, jedoch als Inline-Box, anstatt einer Blockebenen-Box. Innerhalb der Table-Box befindet sich ein Block-Ebenen-Kontext.Es ist gleichbedeutend mit
inline table
. inline-flex
-
Das Element verhält sich wie ein Inline-Element und layoutiert seinen Inhalt gemäß dem Flexbox-Modell.
Es ist gleichbedeutend mit
inline flex
. inline-grid
-
Das Element verhält sich wie ein Inline-Element und layoutiert seinen Inhalt gemäß dem Grid-Modell.
Es ist gleichbedeutend mit
inline grid
.
Welche Syntax sollten Sie verwenden?
Das CSS Display Modul beschreibt eine Mehrfach-Schlüsselwort-Syntax für Werte, die Sie mit der display
-Eigenschaft verwenden können, um explizit äußere und innere Displaywerte zu definieren.
Die Einzel-Schlüsselwort-Werte (vorgefertigte <display-legacy>
Werte) werden für die Abwärtskompatibilität unterstützt.
Zum Beispiel können Sie mit zwei Werten einen Inline-Flex-Container wie folgt spezifizieren:
.container {
display: inline flex;
}
Dies kann auch mit dem veralteten Einzelwert spezifiziert werden:
.container {
display: inline-flex;
}
Für mehr Informationen über diese Änderungen siehe den Using the multi-keyword syntax with CSS display-Leitfaden.
Beschreibung
Die einzelnen Seiten für die verschiedenen Werttypen, die auf display
gesetzt werden können, enthalten mehrere Beispiele dieser Werte in Aktion — siehe den Syntax Abschnitt. Außerdem finden Sie das folgende Material, das die verschiedenen Werte von Display ausführlich behandelt.
Mehrfach-Schlüsselwort-Werte
CSS Flow Layout (display: block, display: inline)
display: flex
display: grid
- Basic concepts of grid layout
- Relationship to other layout methods
- Line-based placement
- Grid template areas
- Layout using named grid lines
- Auto-placement in grid layout
- Aligning items in CSS grid layout
- Grids, logical values and writing modes
- CSS grid layout and accessibility
- Realizing common layouts using grids
Animationen von display
Unterstützende Browser animieren display
mit einem diskreten Animationstyp. Dies bedeutet im Allgemeinen, dass die Eigenschaft während der Animation zwischen zwei Werten bei 50% umschaltet.
Es gibt eine Ausnahme, wenn zu oder von display: none
animiert wird. In diesem Fall wird der Browser zwischen den beiden Werten umschalten, sodass der animierte Inhalt für die gesamte Dauer der Animation angezeigt wird. Zum Beispiel:
- Bei der Animation von
display
vonnone
zublock
(oder einem anderen sichtbarendisplay
-Wert) wird der Wert bei0%
der Animationsdauer aufblock
umgeschaltet, sodass er während der gesamten Animation sichtbar ist. - Bei der Animation von
display
vonblock
(oder einem anderen sichtbarendisplay
-Wert) zunone
wird der Wert bei100%
der Animationsdauer aufnone
umgeschaltet, sodass er während der gesamten Animation sichtbar ist.
Dieses Verhalten ist nützlich, um Ein-/Ausblendeffekte zu erstellen, bei denen Sie z.B. ein Container-Element mit display: none
aus dem DOM entfernen möchten, aber es mit opacity ausblenden, anstatt es sofort verschwinden zu lassen.
Wenn display
mit CSS-Animationen animiert wird, müssen Sie den Startwert display
in einem expliziten Keyframe angeben (z.B. unter Verwendung von 0%
oder from
). Siehe Using CSS animations für ein Beispiel.
Beim Animieren von display
mit CSS-Übergängen sind zwei zusätzliche Funktionen erforderlich:
@starting-style
stellt Startwerte für Eigenschaften bereit, von denen Sie beim ersten Anzeigen des animierten Elements ausgehend eine Übergangswirkung erzielen möchten. Dies ist erforderlich, um unerwartetes Verhalten zu vermeiden. Standardmäßig werden CSS-Übergänge nicht beim ersten Stil-Update eines Elements oder wenn derdisplay
-Typ vonnone
zu einem anderen Typ geändert wird, aktiviert.transition-behavior: allow-discrete
muss auf dertransition-property
-Deklaration (oder imtransition
-Kurzschreibweise) gesetzt werden, umdisplay
-Übergänge zu ermöglichen.
Für Beispiele zum Übergang der display
-Eigenschaft siehe die Seiten @starting-style
und transition-behavior
.
Barrierefreiheit
display: none
Die Verwendung eines display
-Wertes von none
auf einem Element entfernt es aus dem Accessibility-Tree. Dies führt dazu, dass das Element und alle seine Nachfahrelemente nicht mehr durch Bildschirmlesetechnologien angekündigt werden.
Wenn Sie das Element visuell ausblenden möchten, ist eine barrierefreiere Alternative, eine Kombination von Eigenschaften zu verwenden, um es visuell vom Bildschirm zu entfernen, aber trotzdem für unterstützende Technologien wie Bildschirmleser verfügbar zu machen.
Während display: none
Inhalte aus dem Accessibility-Tree ausblendet, werden Elemente, die ausgeblendet sind, aber von sichtbaren Elementen mit den Attributen aria-describedby
oder aria-labelledby
referenziert werden, dennoch von unterstützenden Technologien erkannt.
display: contents
Aktuelle Implementierungen in einigen Browsern entfernen aus dem Accessibility-Tree jedes Element mit einem display
-Wert von contents
(aber Nachfahren bleiben bestehen). Dies führt dazu, dass das Element selbst nicht mehr von Bildschirmlesetechnologien angekündigt wird. Dies ist ein fehlerhaftes Verhalten gemäß der CSS-Spezifikation.
Tabellen
In einigen Browsern wird durch das Ändern des display
-Werts eines <table>
-Elements zu block
, grid
oder flex
deren Darstellung im Accessibility-Tree verändert. Dies führt dazu, dass die Tabelle nicht mehr richtig durch Bildschirmlesetechnologien 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> |
<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 der display-Werte
In diesem Beispiel haben wir zwei Blockcontainer-Elemente, jeweils mit drei Inline-Kindern. Darunter haben wir ein Auswahlmenü, das Ihnen ermöglicht, verschiedene display
-Werte auf die Container anzuwenden, sodass Sie vergleichen können, wie sich die verschiedenen Werte auf das Layout des Elements und das seiner Kinder auswirken.
Wir haben padding
und background-color
auf den Containern und ihren Kindern hinzugefügt, damit es einfacher ist, den Effekt der Display-Werte zu sehen.
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>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>
</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 Mehrfach-Schlüsselwortwerte zur Illustration hinzugefügt wurden, die folgende Entsprechungen haben:
block
=block flow
inline
=inline flow
flow
=block flow
flow-root
=block flow-root
table
=block table
flex
=block flex
grid
=block grid
list-item
=block flow list-item
inline-block
=inline flow-root
inline-table
=inline table
inline-flex
=inline flex
inline-grid
=inline grid
Sie können weitere Beispiele auf den Seiten für jeden separaten Anzeigetyp unter Gruppierte Werte finden.
Spezifikationen
Specification |
---|
CSS Display Module Level 3 # the-display-properties |
Scalable Vector Graphics (SVG) 2 # VisibilityControl |