练习一个卡片翻转的小demo,发现的小问题,如下:
想要的实现的效果:
使用transform-style: preserve-3d;后得到的效果:
得到得是将鼠标放上去后,实现翻转后得内容的关于轴旋转180deg后得内容。
在经过翻阅文章后发现,“通过 backface-visibility:hidden; 属性,我们可以使一个元素在翻转之后消失,这是可以使用另一个元素放在它的背面,从而制作出一种元素翻转之后出现另一个元素的效果。 backface-visibility 属性和3D transform效果相关,它用于决定当一个元素的背面面向用户的时候是否可见。(引用的原解释)”。
在经过试错后,发现只使用transform-style: preserve-3d;时,是能够将文字或图片等实现正背面都是同一个文字文字或图片等的效果。而当两种文字(或其他)实现交叉效果时,则只能实现其中的一种文字效果。
因此想要实现两种文字交叉的翻转效果,需要使用transform-style: preserve-3d;后需配合backface-visibility:hidden;将背面隐藏掉,使另一文字标题能够展示出来。
具体代码如下:
html
<div class="card">
<div class="front">
<p>旋转小卡片</p>
</div>
<div class="back">
<p>心情</p>
<p>天气</p>
<p>日期</p>
<p>记事本</p>
</div>
</div>
css
/* 卡片样式设置 */
.card {
width: 300px;
height: 450px;
position: relative;
border-radius: 30px;
cursor: pointer;
background-color: #fff;
box-shadow: 1px 1px 20px rgba(0, 0, 0, 0.1);
transform-style: preserve-3d;
animation: rotate-reverse 1.2s cubic-bezier(0.66, -0.47, 0.33, 1.5) forwards;
}
/* 文字样式设置 */
.front,
.back {
width: 100%;
height: 100%;
position: absolute;
top: 0;
left: 0;
display: flex;
flex-direction: column;
align-items: center;
justify-content: space-around;
background-color: #fff;
border-radius: 30px;
font-size: 20px;
/* 隐藏背面 */
backface-visibility: hidden;
}
文章写的不好,如有需要的可以看看下面推荐的文章。