实例:3D卡片hover翻转效果
技术栈:HTML+CSS
效果:
源码:
【html】
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,user-scalable=no">
<title>3D卡片hover翻转效果</title>
<link rel="stylesheet" href="../css/96.css">
</head>
<body>
<section>
<div class="card">
<div class="box">
<div class="img-box">
<img src="../images/op/1.jpg" alt="">
</div>
<div class="con-box">
<div>
<h2>蒙奇·D·路飞</h2>
<p>蒙奇·D·路飞,日本漫画《航海王》及其衍生作品中的男主角。外号“草帽”路飞,是草帽一伙、草帽大船团的船长,极恶的世代之一。橡胶果实能力者,悬赏金15亿贝里。梦想是找到传说中的One Piece,成为海贼王。</p>
</div>
</div>
</div>
</div>
<div class="card">
<div class="box">
<div class="img-box">
<img src="../images/op/2.jpg" alt="">
</div>
<div class="con-box">
<div>
<h2>罗罗诺亚·索隆</h2>
<p>罗罗诺亚・索隆,日本漫画《航海王》及其衍生作品中的角色。“草帽一伙”的战斗员,人称“海贼猎人”。2年前登陆香波地群岛的11位“超新星”其中的一位。同时也是被人称作“极恶的世代”中的一位。</p>
</div>
</div>
</div>
</div>
<div class="card">
<div class="box">
<div class="img-box">
<img src="../images/op/3.jpg" alt="">
</div>
<div class="con-box">
<div>
<h2>山治</h2>
<p>山治,日本漫画《海贼王》及其衍生作品中的角色。草帽一伙的厨师,因踢技快准狠被海军称之为“黑足”,悬赏金为3亿3000万贝里。海贼中的绅士,有着卷曲眉毛,永远遮住半边脸的家伙,香烟不离口,最爱女人,很花心但很有风度,从不愿意伤害任何女性,哪怕是敌人。</p>
</div>
</div>
</div>
</div>
</section>
</body>
</html>
【css】
*{
/* 初始化 */
margin: 0;
padding: 0;
box-sizing: border-box;
}
body{
/* 100%窗口高度 */
min-height: 100vh;
/* 弹性布局 水平+垂直居中 */
display: flex;
justify-content: center;
align-items: center;
background: linear-gradient(200deg,#fff1eb,#ace0f9);
}
section{
display: flex;
justify-content: center;
align-items: center;
flex-wrap: wrap;
}
.card{
/* 相对定位 */
position: relative;
width: 320px;
height: 320px;
margin: 20px;
/* 开启3D效果 */
transform-style: preserve-3d;
perspective: 1000px;
}
.card .box{
/* 绝对定位 */
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
transform-style: preserve-3d;
/* 设置过渡 */
transition: 1s ease;
}
.card .box .img-box{
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
}
.card .box .img-box img{
width: 100%;
height: 100%;
object-fit: cover;
}
.card .box .con-box{
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
background-color: #333;
display: flex;
justify-content: center;
align-items: center;
/* 隐藏旋转div元素的背面 */
backface-visibility: hidden;
transform-style: preserve-3d;
/* 默认沿Y轴旋转180度 */
transform: rotateY(180deg);
}
.card .box .con-box div{
transform-style: preserve-3d;
padding: 20px;
color: #fff;
/* 渐变背景 */
background: linear-gradient(30deg,#514a9d,#24c6dc);
/* 默认沿Z轴偏移100px */
transform: translateZ(100px);
}
.card .box .con-box div h2{
font-size: 20px;
letter-spacing: 1px;
}
.card .box .con-box div p{
margin-top: 5px;
font-size: 15px;
text-align: justify;
}
.card:hover .box{
/* 鼠标移入,盒子旋转180度 */
transform: rotateY(180deg);
}