CSS实现元素翻转效果
元素翻转的效果能让用户有良好的体验感。
先看看效果:
CSS实现元素翻转的效果有两种思路
1、定义一个父元素,父元素中两个子元素,两个子元素分别是背面与正面,两个子元素同时翻转
2、定义一个父元素,父元素中两个子元素,两个子元素分别是背面与正面,控制父元素翻转
//两个子元素同时翻转的思路
<style>
main{
width: 300px;
height: 500px;
position: relative;
perspective: 5000px;
}
.bg,.main{
width: 100%;
height: 100%;
position: absolute;
left: 0;
left: 0;
}
.bg{
background-color: red;
animation: flip1 3s linear;
animation-fill-mode: forwards;
backface-visibility: hidden;
}
.main{
background-color: aqua;
transform: rotateY(180deg);
animation: flip2 3s linear;
animation-fill-mode: forwards;
backface-visibility: hidden;
}
@keyframes flip1{
0%{
transform: rotateY(0deg);
}
100%{
transform: rotateY(180deg);
}
}
@keyframes flip2{
0%{
transform: rotateY(180deg);
}
100%{
transform: rotateY(360deg);
}
}
</style>
<main>
<div class="bg">1</div>
<div class="main">2</div>
</main>
//仅父元素翻转的思路
<style>
@keyframes flip{
0%{
-webkit-transform: rotateY(0deg);
transform: rotateY(0deg);
-webkit-animation-timing-function: ease-out;
animation-timing-function: ease-out;
}
100%{
-webkit-transform: rotateY(180deg);
transform: rotateY(180deg);
-webkit-animation-timing-function: ease-in;
animation-timing-function: ease-in;
}
}
main{
width: 500px;
height: 500px;
background-color: red;
position: relative;
animation: flip 3s linear;
transform-style: preserve-3d;
animation-fill-mode: forwards;
}
.bg,.main{
position: absolute;
left: 0;
top: 0;
width: 100%;
height: 100%;
backface-visibility: hidden;
border-radius: 10px;
}
.bg{
background-color: red;
}
.main{
transform: rotateY(180deg);
background-color: blue;
}
</style>
<main>
<div class="bg">1</div>
<div class="main">2</div>
</main>
翻转效果建议IOS系统、安卓系统、window系统都要进行实机测试,免得线上环境出现兼容问题。