3D 图片悬停效果
效果展示
CSS 知识点
- background 属性的综合运用
- transform 属性的综合运用
页面整体布局
<div class="box">
<span style="--i: 0"></span>
<span style="--i: 1"></span>
<span style="--i: 2"></span>
<span style="--i: 3"></span>
</div>
编写图片框样式
.box {
width: 640px;
height: 360px;
transform: rotate(-25deg) skew(25deg);
transition: 0.5s;
display: flex;
border-left: 5px solid #fff;
border-left: 5px;
/* 只是为了看图片框样式才进行设置的参数后续要删除 */
background: #fff;
}
编写图片框选型效果
.box:hover {
transform: rotate(-25deg) skew(-25deg) translateY(-20px);
}
编写 4 等分图片容器框和设置对应背景图片
图片容器框主要作用是用于图片悬停后使用transform
属性实行 3D 效果。
.box span {
width: 25%;
height: 100%;
background: none;
display: block;
transition: 0.5s;
pointer-events: none;
background: url(./bg.jpg);
background-size: cover;
/* 640px / 4 等分计算出每个图片容器背景图片的移动位置 */
background-position: calc(-160px * var(--i));
}
编写图片容器选型效果
.box:hover span:nth-child(odd) {
transform: skewY(25deg);
box-shadow: inset 20px 0 50px rgba(0, 0, 0, 0.5);
}
.box:hover span:nth-child(even) {
transform: skewY(-25deg);
box-shadow: inset 20px 0 50px rgba(0, 0, 0, 0.5);
}
图片框添加边框
.box span {
width: 25%;
height: 100%;
background: none;
display: block;
transition: 0.5s;
pointer-events: none;
background: url(./bg.jpg);
background-size: cover;
background-position: calc(-160px * var(--i));
border-top: 5px solid #fff;
border-bottom: 5px solid #fff;
}
.box span:first-child {
border-left: 5px solid #fff;
}
.box span:last-child {
border-right: 5px solid #fff;
}
完整代码下载
完整代码下载