效果展示,鼠标经过展开,鼠标离开收回
HTML
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="./style.css">
<link rel="icon" href="./1.png">
<title>动感可乐</title>
</head>
<body>
<div class="card">
<div class="circle"></div>
<div class="content">
<h2>Pepsi Cola</h2>
<p>Lorem ipsum, dolor sit amet consectetur adipisicing elit. iustoLorem ipsum dolor sit amet consectetur adipisicing elit. Doloremque itaque, consequuntur</p>
<a href="#">Buy Now</a>
</div>
<img src="./2.png" alt="">
</div>
<div class="card">
<div class="circle"></div>
<div class="content">
<h2>Pepsi Zero</h2>
<p>Lorem ipsum, dolor sit amet consectetur adipisicing elit. iustoLorem ipsum dolor sit amet consectetur adipisicing elit. Doloremque itaque, consequuntur</p>
<a href="#">Buy Now</a>
</div>
<img src="./3.png" alt="">
</div>
</body>
</html>
CSS
* {
margin: 0;
padding: 0;
box-sizing: border-box;
font-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;
}
body {
display: flex;
justify-content: center;
align-items: center;
min-height: 100vh;
background: radial-gradient(#f7efef,#9a9e98);
flex-wrap: wrap;
}
.card {
position: relative;
width: 600px;
height: 350px;
border-radius: 20px;
display: flex;
align-items: center;
transition: 0.5s;
}
.card .circle {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
overflow: hidden;
}
.card .circle::before {
content: "";
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: red;
/* 切割路径 从中心部分切割 */
clip-path: circle(120px at center);
border-radius: 20px;
transition: 0.5s;
}
.card:hover .circle::before {
clip-path: circle(400px at center);
background: #0065c3;
}
.card img {
position: absolute;
top: 50%;
left: 50%;
/* 居中 */
transform: translate(-50%,-50%);
height: 300px;
pointer-events: none;
transition: 0.5s;
}
.card:hover img {
left: 72%;
height: 500px;
}
.card .content {
position: relative;
width: 50%;
padding: 20px 20px 20px 40px;
transition: 0.5s;
pointer-events: none;
opacity: 0;
visibility: hidden;
}
.card:hover .content{
left: 0;
opacity: 1;
visibility: visible;
}
.card .content h2 {
color: #fff;
text-transform: uppercase;
font-size: 2em;
line-height: 1em;
margin-bottom: 7px;
}
.card .content p{
color: #fff;
}
.card .content a{
position: relative;
color: #000;
padding: 10px 20px;
border-radius: 10px;
background: #fff;
text-decoration: none;
margin-top: 10px;
display: inline-block;
font-weight: 700;
}
.card:nth-child(2):hover .circle::before {
clip-path: circle(400px at center);
background: rgba(0,0,0,0.939)
}
@media (max-width:991px) {
.card{
width: auto;
max-width: 350px;
align-items: flex-start;
margin: 13px;
}
.card:hover{
height: 600px;
}
.card .content{
width: 100%;
left: 0;
padding: 30px;
}
.card:hover img{
top: 70%;
left: 50%;
height: 300px;
}
}
@media (max-width:420px) {
.card .content{
padding: 20px;
}
}