Ho provato a creare questo effetto utilizzando le transizioni. Dovrebbe sembrare che stai aprendo una scatola.Creazione di un effetto di apertura della scatola utilizzando solo CSS
Ci sono 2 problemi:
- L'ordine in cui la scatola chiusa è stesso in cui si apre. C'è comunque la possibilità di chiudere la scatola in ordine inverso rispetto alla sua apertura in modo che la scatola torni nello stesso stato in cui era chiusa?
- Le estremità delle alette verdi e gialle sono nascoste durante la transizione a causa delle alette rosse e blu, quindi non sembra 3D. C'è un modo per mostrare tutti i flap in 3D?
Preferirei se la soluzione fosse in puro CSS, non JavaScript per favore.
#box {
position: relative;
top: 170px;
left: 170px;
width: 300px;
height: 300px;
border: 1px solid black;
perspective: 800px;
}
#flap1, #flap2, #flap3, #flap4 {
position: absolute;
}
#flap1 {
background-color: red;
width: 150px;
height: 300px;
z-index: 1;
transform-origin: 0 0;
transition: transform 1s;
}
#flap2 {
left: 150px;
background-color: blue;
width: 150px;
height: 300px;
z-index: 1;
transform-origin: 100% 0;
transition: transform 1s ease 0.3s;
}
#flap3 {
background-color: green;
width: 300px;
height: 150px;
transform-origin: 0 0;
transition: transform 1s ease 0.6s;
}
#flap4 {
background-color: yellow;
top: 150px;
width: 300px;
height: 150px;
transform-origin: 0 100%;
transition: transform 1s ease 0.9s;
}
#box:hover #flap1{
transform: rotateY(-170deg);
}
#box:hover #flap2{
transform: rotateY(170deg);
}
#box:hover #flap3{
transform: rotateX(170deg);
}
#box:hover #flap4{
transform: rotateX(-170deg);
}
<html>
<head>
<link rel="stylesheet" href="style.css">
</head>
<body>
<div id="box">
<div id="flap1"></div>
<div id="flap2"></div>
<div id="flap3"></div>
<div id="flap4"></div>
</div>
</body>
</html>
1. Penso che non si può. Basta aggiungere un'altra classe o qualcosa. 2.Puoi usare css3 ['perspective'] (http://www.w3schools.com/cssref/css3_pr_perspective.asp) –