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 March 2022.
Die transform-style
CSS-Eigenschaft legt fest, ob die Kinder eines Elements im 3D-Raum positioniert werden oder in der Ebene des Elements abgeflacht sind.
Probieren Sie es aus
Wenn abgeflacht, existieren die Kinderelemente nicht eigenständig im 3D-Raum.
Da diese Eigenschaft nicht vererbt wird, muss sie für alle nicht-Blatt-Nachfahren des Elements gesetzt werden.
Syntax
/* 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 sollten.
Beschreibung
Die Spezifikation listet einige Gruppierungseigenschaftswerte auf, die vom User Agent verlangen, eine abgeflachte Darstellung der Nachkommenelemente zu erstellen, bevor sie angewendet werden können, und erzwingen daher, dass das Element einen verwendeten Wert von transform-style: flat
hat, selbst wenn preserve-3d
angegeben ist. Diese Eigenschaftswerte umfassen:
overflow
: jeden Wert außervisible
oderclip
.opacity
: jeden Wert kleiner als1
.filter
: jeden Wert außernone
.clip
: jeden Wert außerauto
.clip-path
: jeden Wert außernone
.isolation
: verwendeter Wert vonisolate
.mask-image
: jeden Wert außernone
.mask-border-source
: jeden Wert außernone
.mix-blend-mode
: jeden Wert außernormal
.contain
:paint
und jede andere Eigenschaft/Wert-Kombination, die Mal-Inhaltserfassung verursacht. Dies umfasst jede Eigenschaft, die den verwendeten Wert dercontain
-Eigenschaft beeinflusst, wie zum Beispielcontent-visibility: hidden
.
Formale Definition
Anfangswert | flat |
---|---|
Anwendbar auf | transformierbare Elemente |
Vererbt | Nein |
Berechneter Wert | wie angegeben |
Animationstyp | diskret |
Erstellt Stapelkontext | Ja |
Formale Syntax
transform-style =
flat |
preserve-3d
Beispiele
Demonstration der Transform-Eigenschaft
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 beabsichtigt sehen können.
Wir bieten auch ein Kontrollkästchen, das Ihnen ermöglicht, zwischen diesem und transform-style: flat
umzuschalten. In diesem alternativen Zustand werden die Würfelflächen alle auf die Ebene ihres übergeordneten Elements abgeflacht, und Sie könnten sie möglicherweise gar nicht sehen, abhängig vom verwendeten Browser.
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
#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: #fff;
}
.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
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
BCD tables only load in the browser