Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten. Erfahre mehr über dieses Experiment.

View in English Always switch to English

transform-style

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since ⁨September 2015⁩.

Die transform-style-Eigenschaft von CSS legt fest, ob die Kinder eines Elements im 3D-Raum positioniert oder in die Ebene des Elements abgeflacht werden.

Probieren Sie es aus

transform-style: flat;
transform-style: preserve-3d;
<section class="default-example" id="default-example">
  <div class="transition-all layer" id="example-element">
    <p>Parent</p>
    <div class="numeral"><code>rotate3d(1, 1, 1, 45deg)</code></div>
  </div>
</section>
.layer {
  background: #623e3f;
  border-radius: 0.75rem;
  color: white;
  transform: perspective(200px) rotateY(30deg);
}

.numeral {
  background-color: #ffba08;
  border-radius: 0.2rem;
  color: black;
  margin: 1rem;
  padding: 0.2rem;
  transform: rotate3d(1, 1, 1, 45deg);
}

Wenn sie abgeflacht sind, existieren die Kinder des Elements nicht eigenständig im 3D-Raum.

Da diese Eigenschaft nicht vererbt wird, muss sie für alle Nicht-Blattnachkommen des Elements gesetzt werden.

Syntax

css
/* Keyword values */
transform-style: flat;
transform-style: preserve-3d;

/* Global values */
transform-style: inherit;
transform-style: initial;
transform-style: revert;
transform-style: revert-layer;
transform-style: unset;

Werte

flat

Gibt an, dass die Kinder des Elements in der Ebene des Elements selbst liegen.

preserve-3d

Gibt an, dass die Kinder des Elements im 3D-Raum positioniert werden sollen.

Beschreibung

Die Spezifikation listet einige Gruppierungseigenschaftswerte auf, die den Benutzeragenten erfordern, eine abgeflachte Darstellung der Nachkommenelemente zu erstellen, bevor sie angewendet werden können. Diese zwingen das Element dazu, einen verwendeten Wert von transform-style: flat zu haben, selbst wenn preserve-3d angegeben ist. Diese Eigenschaftswerte umfassen:

  • overflow: jeder Wert außer visible oder clip.
  • opacity: jeder Wert kleiner als 1.
  • filter: jeder Wert außer none.
  • clip: jeder Wert außer auto.
  • clip-path: jeder Wert außer none.
  • isolation: verwendeter Wert von isolate.
  • mask-image: jeder Wert außer none.
  • mask-border-source: jeder Wert außer none.
  • mix-blend-mode: jeder Wert außer normal.
  • contain: paint und jede andere Eigenschaft/Wert-Kombination, die Farbcontainment verursacht. Dies schließt jede Eigenschaft ein, die den verwendeten Wert der contain-Eigenschaft beeinflusst, wie content-visibility: hidden.

Formelle Definition

Anfangswertflat
Anwendbar auftransformierbare Elemente
VererbtNein
Berechneter Wertwie angegeben
Animationstypdiskret
Erstellt StapelkontextJa

Formale Syntax

transform-style = 
flat |
preserve-3d

Beispiele

Demonstration der Transformationsart

In diesem Beispiel haben wir einen 3D-Würfel erstellt, der Transformationen verwendet. Der übergeordnete Container der Würfelflächen hat standardmäßig transform-style: preserve-3d gesetzt, sodass er im 3D-Raum transformiert wird und Sie ihn wie vorgesehen sehen können.

Wir bieten auch ein Kontrollkästchen an, das es Ihnen ermöglicht, zwischen diesem und transform-style: flat umzuschalten. In diesem alternativen Zustand sind die Würfelflächen alle auf die Ebene ihres Elternteils abgeflacht, und Sie könnten sie überhaupt nicht sehen, abhängig vom Browser, den Sie verwenden.

HTML

html
<section id="example-element">
  <div class="face front">1</div>
  <div class="face back">2</div>
  <div class="face right">3</div>
  <div class="face left">4</div>
  <div class="face top">5</div>
  <div class="face bottom">6</div>
</section>

<div class="checkbox">
  <label for="preserve"><code>preserve-3d</code></label>
  <input type="checkbox" id="preserve" checked />
</div>

CSS

css
#example-element {
  margin: 50px;
  width: 100px;
  height: 100px;
  transform-style: preserve-3d;
  transform: rotate3d(1, 1, 1, 30deg);
}

.face {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 100%;
  height: 100%;
  position: absolute;
  backface-visibility: inherit;
  font-size: 60px;
  color: white;
}

.front {
  background: rgb(90 90 90 / 70%);
  transform: translateZ(50px);
}

.back {
  background: rgb(0 210 0 / 70%);
  transform: rotateY(180deg) translateZ(50px);
}

.right {
  background: rgb(210 0 0 / 70%);
  transform: rotateY(90deg) translateZ(50px);
}

.left {
  background: rgb(0 0 210 / 70%);
  transform: rotateY(-90deg) translateZ(50px);
}

.top {
  background: rgb(210 210 0 / 70%);
  transform: rotateX(90deg) translateZ(50px);
}

.bottom {
  background: rgb(210 0 210 / 70%);
  transform: rotateX(-90deg) translateZ(50px);
}

JavaScript

js
const cube = document.getElementById("example-element");
const checkbox = document.getElementById("preserve");

checkbox.addEventListener("change", () => {
  cube.style.transformStyle = checkbox.checked ? "preserve-3d" : "flat";
});

Ergebnis

Spezifikationen

Specification
CSS Transforms Module Level 2
# transform-style-property

Browser-Kompatibilität

Siehe auch