这段代码创建了一个具有 3D 翻转效果的卡片,用于展示篮球明星詹姆斯和韦德的空中接力。当用户将鼠标悬停在卡片上时,卡片会放大并显示额外的信息,同时图片会消失,突出显示文本内容。
演示效果
HTML&CSS
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>公众号关注:前端Hardy</title>
<style>
body {
margin: 0;
padding: 0;
background: #e8e8e8;
display: flex;
align-items: center;
justify-content: center;
height: 100vh;
}
section.card {
position: relative;
width: 350px;
height: 200px;
background-color: #474dc3;
border-radius: 10px;
display: flex;
align-items: center;
justify-content: center;
overflow: hidden;
perspective: 1000px;
transition: all 0.8s cubic-bezier(0.175, 0.885, 0.32, 1.275);
}
.card svg {
fill: #333;
transition: all 0.6s cubic-bezier(0.175, 0.885, 0.32, 1.275);
border-radius: 3px;
}
.card:hover {
transform: scale(1.02);
box-shadow: 0 8px 16px #000000;
background-color: #474dc3;
color: #ffffff;
}
.cardContent {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
padding: 20px;
box-sizing: border-box;
background-color: #474dc3;
transform: rotateX(-90deg);
transform-origin: bottom;
transition: all 0.6s cubic-bezier(0.175, 0.885, 0.32, 1.275);
}
.card:hover .cardContent {
transform: rotateX(0deg);
}
.cardTitle {
margin: 0;
padding-left: 5px;
font-size: 24px;
color: var(--white);
font-weight: 700;
}
.card img {
width: 100%;
height: 100%;
object-fit: cover;
}
.card:hover img {
scale: 0;
}
.title {
position: absolute;
bottom: 0;
left: 0;
width: 100%;
text-align: center;
padding: 5px 0;
margin: 0;
color: #000000;
font-size: 18px;
background: rgba(255, 255, 255, .6);
}
.cardDescription {
margin: 20px 0 0;
font-size: 14px;
color: #ffffff;
line-height: 1.8;
text-indent: 2rem;
}
</style>
</head>
<body>
<section id="card1" class="card">
<img src="../Desktop/image.jpg" alt="">
<p class="title">还记得詹韦连线吗?</p>
<div class="cardContent">
<p class="cardTitle">詹姆斯与韦德的空中接力</p>
<p class="cardDescription">
在NBA赛场上,詹姆斯与韦德的连线扣篮总是让人热血沸腾。
两位超级巨星的默契配合,让每一次空中接力都成为经典。
詹姆斯的精准传球与韦德的强力扣篮,展现了篮球运动的极致魅力。
</p>
</div>
</section>
</body>
</html>
HTML 结构
- card: 创建一个类名为“card”的 section 元素,用于展示卡片内容。
- img: 插入一张图片。
- title: 一个段落元素,包含文本“还记得詹韦连线吗?”。
- cardContent: 一个 div 元素,包含卡片的额外内容。
- cardTitle: 一个段落元素,包含标题“詹姆斯与韦德的空中接力”。
- cardDescription: 一个段落元素,包含描述詹姆斯和韦德空中接力的文本。
CSS 样式
- body: 设置页面的边距、填充、背景色、显示方式和高度。
- section.card: 定义卡片的基本样式,包括尺寸、背景色、边框半径、显示方式和 3D 透视效果。
- .card svg: 设置 SVG 元素的填充色和过渡效果。
- .card:hover: 当鼠标悬停在卡片上时,卡片会放大并添加阴影效果。
- .cardContent: 设置卡片内容的定位、尺寸、填充、背景色和 3D 旋转效果。
- .card:hover .card_content: 当鼠标悬停在卡片上时,卡片内容会旋转到正面。
- .cardTitle: 设置卡片标题的样式。
- .card img: 设置卡片中图片的尺寸和适应方式。
- .card:hover img: 当鼠标悬停在卡片上时,图片会缩放至不可见。
- .title: 设置标题的定位、文本对齐和样式。
- .cardDescription: 设置卡片描述的样式。