新增第145个小实例:3D分割图片悬停拼接特效

This commit is contained in:
DESKTOP-BM6RJU5\wyanh 2022-05-01 18:23:23 +08:00
parent b92732da91
commit 0250f8ad59
3 changed files with 162 additions and 1 deletions

View File

@ -151,4 +151,5 @@
141. HTML5+CSS3+JS小实例迷你音乐播放器
142. HTML5+CSS3+JS小实例数据碎片故障风科技背景动画特效
143. HTML5+CSS3小实例抖音LOGO故障风文字动画特效
144. HTML5+CSS3小实例图片悬停旋转堆叠特效
144. HTML5+CSS3小实例图片悬停旋转堆叠特效
145. HTML5+CSS3小实例3D分割图片悬停拼接特效

133
code/145/145.css Normal file
View File

@ -0,0 +1,133 @@
*{
margin: 0;
padding: 0;
}
body{
/* 100%窗口高度 */
height: 100vh;
/* 弹性布局 居中显示 */
display: flex;
justify-content: center;
align-items: center;
/* 渐变背景 */
background: linear-gradient(200deg,#f5f7fa,#c3cfe2);
}
.container{
/* 相对定位 */
position: relative;
/* 设置视距 */
perspective: 50px;
}
.text{
display: inline-block;
position: relative;
z-index: 1;
padding: 50px 70px;
background-color: rgba(124,189,174,0.65);
color: rgba(0,0,0,0.85);
text-align: center;
letter-spacing: 6px;
font-weight: 100;
cursor: pointer;
/* 背景模糊 */
backdrop-filter: blur(6px);
/* 过渡效果 */
transition: 0.25s ease-in-out;
}
.text h2{
font-size: 30px;
font-weight: 100;
margin-bottom: 10px;
}
.image{
/* 绝对定位 */
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
z-index: 0;
/* 视距 */
perspective: 50px;
/* 执行动画:动画名 时长 线性的 无限次播放 */
animation: rotate 10s linear infinite;
}
/* 四个方位图片的统一样式 */
.image .part{
width: 250px;
height: 150px;
/* 设置背景图片 */
/* 在这里给大家分享一个可以获取随机图片且宽高可以自定义的宝藏网站【https://picsum.photos】后面的500、300代表图片的宽度、高度 */
background-image: url('https://picsum.photos/500/300');
background-repeat: no-repeat;
/* 绝对定位 居中 */
position: absolute;
top: 50%;
left: 50%;
margin-left: -125px;
margin-top: -75px;
/* 过渡效果:时长 贝塞尔曲线 */
transition: 0.25s cubic-bezier(0.645, 0.045, 0.355, 1);
}
/* 分别设置四个方位图片的显示区域、位置、旋转角度 */
.image .part-1{
transform: translate(-63%,-68%) rotate3d(1,-1,-1,3deg);
background-position: top left;
}
.image .part-2{
transform: translate(71%,-68%) rotate3d(1,1,-1,3deg);
background-position: top right;
}
.image .part-3{
transform: translate(-65%,71%) rotate3d(-1,-1,-1,3deg);
background-position: bottom left;
}
.image .part-4{
transform: translate(70%,73%) rotate3d(-1,1,-1,3deg);
background-position: bottom right;
}
/* 文本悬停 */
.text:hover{
opacity: 0;
transform: translateY(-16px);
}
/* 文本悬停,取消图片区域的动画 */
.text:hover + .image{
animation: none;
}
/* 文本悬停,设置四个方位图片的位置、过渡动画延迟时间 */
.text:hover + .image .part-1{
transform: translate(-50%,-50%);
transition-delay: 0.2s;
}
.text:hover + .image .part-2{
transform: translate(50%,-50%);
transition-delay: 0.15s;
}
.text:hover + .image .part-3{
transform: translate(-50%,50%);
transition-delay: 0.3s;
}
.text:hover + .image .part-4{
transform: translate(50%,50%);
transition-delay: 0.25s;
}
/* 定义动画 */
@keyframes rotate {
0%{
transform: rotate3d(1.9, 0.2, 0, 1deg);
}
25%{
transform: rotate3d(1.5, -1.1, 0, 1deg);
}
50%{
transform: rotate3d(1.3, -1.7, 0, 1deg);
}
75%{
transform: rotate3d(-1.5, -1.2, 0, 1deg);
}
100%{
transform: rotate3d(1.9, 0.2, 0, 1deg);
}
}

27
code/145/145.html Normal file
View File

@ -0,0 +1,27 @@
<!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分割图片悬停拼接特效</title>
<link rel="stylesheet" href="145.css">
</head>
<body>
<div class="container">
<div class="text">
<h2>悬停看效果</h2>
(hover me)
</div>
<div class="image">
<div class="part part-1"></div>
<div class="part part-2"></div>
<div class="part part-3"></div>
<div class="part part-4"></div>
</div>
</div>
</body>
</html>