Direi che questo non è possibile. (qualunque cosa Microsoft dice). Il flatening dell'elemento figlio non può essere annullato applicando ulteriori trasformazioni. Vedere il seguente demo:
fiddle
con il codice HTML:
<div class="base" id="base1">Base1
<div class="inner" id="inner1">1</div>
<div class="inner" id="inner2">2</div>
<div class="inner" id="inner3">3</div>
<div class="inner" id="inner4">4</div>
<div class="inner" id="inner5">5</div>
<div class="inner" id="inner6">6</div>
<div class="inner" id="inner7">7</div>
<div class="inner" id="inner8">8</div>
<div class="inner" id="inner9">9</div>
</div>
<div class="base" id="base2">Base2
<div class="inner" id="inner1">1</div>
<div class="inner" id="inner2">2</div>
<div class="inner" id="inner3">3</div>
<div class="inner" id="inner4">4</div>
<div class="inner" id="inner5">5</div>
<div class="inner" id="inner6">6</div>
<div class="inner" id="inner7">7</div>
<div class="inner" id="inner8">8</div>
<div class="inner" id="inner9">9</div>
</div>
<div class="base" id="base3">Base3
<div class="inner" id="inner1">1</div>
<div class="inner" id="inner2">2</div>
<div class="inner" id="inner3">3</div>
<div class="inner" id="inner4">4</div>
<div class="inner" id="inner5">5</div>
<div class="inner" id="inner6">6</div>
<div class="inner" id="inner7">7</div>
<div class="inner" id="inner8">8</div>
<div class="inner" id="inner9">9</div>
</div>
e CSS:
.base {
width: 200px;
height: 250px;
display: block;
-webkit-transform: rotatey(-45deg);
transform: rotatey(-45deg);
border: solid 2px black;
}
#base1 {
-webkit-transform-style: preserve-3d;
}
#base2 {
left: 300px;
top: 0px;
position: absolute;
}
#base3 {
left: 600px;
top: 0px;
position: absolute;
-webkit-transform: rotatey(-88deg);
transform: rotatey(-88deg);
-webkit-transform-style: preserve-3d;
}
.inner {
border: solid 1px black;
height: 20px;
background-color: red;
}
#inner1 {
-webkit-transform: rotatey(0deg);
transform: rotatey(0deg);
}
#inner2 {
-webkit-transform: rotatey(20deg);
transform: rotatey(20deg);
}
#inner3 {
-webkit-transform: rotatey(40deg);
transform: rotatey(40deg);
}
#inner4 {
-webkit-transform: rotatey(60deg);
transform: rotatey(60deg);
}
#inner5 {
-webkit-transform: rotatey(80deg);
transform: rotatey(80deg);
}
#inner6 {
-webkit-transform: rotatey(100deg);
transform: rotatey(100deg);
}
#inner7 {
-webkit-transform: rotatey(120deg);
transform: rotatey(120deg);
}
#inner8 {
-webkit-transform: rotatey(140deg);
transform: rotatey(140deg);
}
#inner9 {
-webkit-transform: rotatey(160deg);
transform: rotatey(160deg);
}
che crea una base di div ruotato -45 gradi. Diversi div sono impostati su questo, con diversi angoli di rotazione. Nella prima serie, vista in un browser webkit, c'è un angolo per il bambino che gli dà la posizione orizzontale e quindi la dimensione originale (più ampia del genitore, che viene ruotata). Nella seconda serie, senza preservare 3d, i bambini non possono eccedere la dimensione genitoriale (apparente). La terza serie è un esempio ad angolo: con un angolo di quasi 90 gradi, il genitore svanisce, ma i bambini sono ancora visibili.
Questo non funziona in IE, dimostrando che non è possibile trovare un angolo che ripristini la proprietà preserve-3d.
Sì, funziona. Tuttavia, se si tenta di creare un'animazione rotante per mostrare tutti i cubi facce uno dopo l'altro, non funziona come previsto perché i volti sembrano sempre prendere il modo più breve per raggiungere la loro nuova rotazione. – gang
Vero, le operazioni di trasformazione sono calcolate in una matrice3d, quando si utilizza l'animazione CSS o le transizioni le facce sono interpolate tra le 2 matrici. Una soluzione alternativa è generare lo stile di trasformazione per ogni faccia in javascript per ogni fotogramma dell'animazione.Puoi * farlo funzionare in IE10 e 11, ma non significa che * dovresti *. Ci vuole un grande sforzo in più. –