CSS100Day(14)-3D卡片翻转

443 字
2 分钟
CSS100Day(14)-3D卡片翻转

设计简介#

本次练习主要理解3D效果:

  1. 知识点1:父元素设置perspective,是视口到元素距离,设置此后配合rotateXrotateYrotateZ就可以生效了

  2. 知识点2:backface-visibility是在父元素设置perspective后,本来元素是正反面都显示,该属性设置hidden后仅正面显示了,例如下面的自行车和直升机 本来是重合的,但是hover翻转后仅看得到一个元素,因为两个元素重合,需要将返回给hidden

效果展示#

实现代码和步骤#

HTML部分#

HTML部分如下

<div class="dis">
<div class="frame">
<div class="card" onclick="void(0);">
<div class="flip">
<div class="front">
<img src="https://100dayscss.com/codepen/bycicle.svg" />
</div>
<div class="back">
<img src="https://100dayscss.com/codepen/helicopter.svg" />
</div>
</div>
</div>
</div>
</div>

CSS部分#

注意2个关键点即可

.dis {
width: 400px;
height: 400px;
overflow: hidden;
}
.frame {
position: relative;
width: 400px;
height: 400px;
box-shadow: 1px 2px 10px 0 rgba(0, 0, 0, 0.3);
background: #4b4841;
}
.card {
position: absolute;
width: 320px;
height: 180px;
top: 110px;
left: 40px;
perspective: 800px;
&:hover .flip {
transform: rotateX(180deg);
box-shadow: 8px -10px 15px 0 rgba(0, 0, 0, 0.5);
}
.flip {
width: 100%;
height: 100%;
transition: all 1s ease-in-out;
box-shadow: 8px 10px 15px 0 rgba(0, 0, 0, 0.5);
}
.front,
.back {
position: absolute;
inset: 0;
background: #ffce4e;
backface-visibility: hidden;
border-radius: 3px;
overflow: hidden;
text-align: center;
}
.front {
transform: rotateX(0);
display: grid;
place-content: center;
}
.back {
transform: rotateX(180deg);
display: grid;
place-content: center;
}
}
分享给其他人
如果该文章对您有帮助,欢迎分享给其他人阅读!
复制链接

评论区

图片
犟哟
Hello, I'm Juyial.
公告
欢迎来到我的博客,在这里可以一起进步,一起学习!2026年起航!
分类
站点统计
文章
19
分类
1
标签
3
总字数
35,134
运行时长
0
最后活动
0 天前

目录