Próbowałem utworzyć ten efekt przy użyciu przejść. Powinno to wyglądać jak otwierasz pudełko.Tworzenie efektu klapki otwartej przy użyciu tylko CSS
Są 2 problemy:
- Kolejność, w której zamyka okno jest taka sama jak w który otwiera. Czy mimo to należy zamknąć pudełko w odwrotnej kolejności od jego otwarcia, aby pudełko powróciło w tym samym stanie, w którym było zamknięte?
- Końce zielonych i żółtych klapek są ukryte podczas przejścia z powodu czerwonych i niebieskich klap, więc nie wygląda 3D. Czy istnieje sposób, w jaki mogę pokazać wszystkie klapy w 3D?
Wolałbym, jeśli rozwiązanie było w czystym CSS, proszę JavaScript.
#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. Myślę, że nie można. Po prostu dodaj kolejną klasę lub coś. 2.Możesz użyć css3 ['perspective'] (http://www.w3schools.com/cssref/css3_pr_perspective.asp) –