Die transform-*
Eigenschaften, wie opacity
und einige andere Rendering bezogenen diejenigen, nicht ‚erben‘ in CSS Bedeutung der Vererbung. Stattdessen wenden sie die visuellen Änderungen auf das Element als Ganzes an, einschließlich aller seiner Nachkommen. Das Anwenden von etwas wie transform: none;
auf diese Nachkommen hat keinen sichtbaren Effekt, es bedeutet nur, dass diese Elemente nicht selbst umgewandelt werden, aber sie werden immer noch mit dem Elternelement transformiert - nicht weil sie seinen Stil "erben", sondern weil sie sind Teile seiner Erscheinung.
Die einzige Möglichkeit, die Transformation des Elternelements für einen Nachkommen visuell zu "rückgängig machen" (dh es als nicht transformiert aussehen zu lassen) besteht darin, es so zu transformieren, dass das Ergebnis dieser Transformation aus der gegebenen Perspektive aussieht So wie es aussehen würde, ohne sich überhaupt umzuwandeln. Um dies zu ermöglichen, müssen das transformierte Element selbst und alle dazwischenliegenden Vorfahren des gegebenen Elements transform-style: preserve-3d
haben. Die benötigte "kompensierende" Transformation kann aus der resultierenden 3D-Szene berechnet werden oder einfach durch Einstellen von Transformationswerten durch Versuch und Irrtum, z.
.items{
...
transform: translate3d(-51px, 11px, 29px) rotateX(-45deg);
transform-origin: 50% 100% 0px;
}
(siehe JSfiddle).
Leider ist diese Problemumgehung nicht kompatibel mit overlow:hidden
, weil es (zusammen mit some other properties) effektiv transform-style: preserve-3d
entfernt. Wenn Sie also die übergelaufenen Teile des transformierten Elements abschneiden und gleichzeitig die Transformation seines Teils rückgängig machen müssen, wäre die einzige Lösung, die für Sie geeignet wäre, den Code so zu organisieren, dass dieser Teil nicht der Nachkomme ist des transformierten Elements nicht mehr.