css+div实现可点击打开的礼品盒堆积效果代码
代码语言:html
所属分类:其他
代码描述:css+div实现可点击打开的礼品盒堆积效果代码
下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开
<!DOCTYPE html>
<html lang="en" >
<head>
<meta charset="UTF-8">
<style>
* { margin: 0; padding: 0; box-sizing: border-box }
body {
height: 100vh;
display: grid;
place-items: center;
position: relative;
overflow: hidden;
background-color: #060606;
}
body::after{
content: "";
position: absolute;
inset: 0;
background-image: url(//repo.bfw.wiki/bfwrepo/image/638847feeeebb.png);
background-size: cover;
z-index: -1;
transform: scale(1.1);
filter: blur(5px);
opacity: 0.25;
}
.scene { perspective: 1500px }
.scene * { transform-style: preserve-3d }
.tree {
--width: 80vmin;
--gap: 2vmin;
--columns: 14;
width: var(--width);
aspect-ratio: 1;
display: grid;
grid-template-columns: repeat(var(--columns), 1fr);
gap: var(--gap);
--box-size: calc(((var(--width) - (var(--columns) - 1) * var(--gap)) / 14) * 2 + var(--gap));
counter-reset: days 25;
direction: rtl
}
.tree > .box {
grid-column: var(--gcs, auto) / span 2;
display: grid;
outline: 1px solid transparent;
counter-increment: days -1;
}
.tree > .box:nth-child(1) { --gcs: 7 }
.tree > .box:nth-child(2) { --gcs: 6 }
.tree > .box:nth-child(4) { --gcs: 5 }
.tree > .box:nth-child(7) { --gcs: 4 }
.tree > .box:nth-child(11){ --gcs: 3 }
.tree > .box:nth-child(16){ --gcs: 2 }
.tree > .box:nth-child(22){ --gcs: 5 }
/* sides */
.tree > .box > p {
grid-area: 1/1;
display: grid;
background-color: var(--wrap);
--ribbon-grad:
transparent 30%, var(--ribbon) 30% 37%, var(--wrap) 37% 38%, var(--ribbon) 38% 62%,
var(--wrap) 62% 63%, var(--ribbon) 63% 70%, transparent 70%;
background-image:
linear-gradient(var(--l1, transparent) 100%, transparent 0),
linear-gradient(90deg, var(--ribbon-grad)),
linear-gradient(0deg, var(--ribbon-grad)),
repeating-linear-gradient(90deg, transparent 0 3%, rgb(0 0 0 / .125) 3% 5%, transparent 5% 8%);
--transform: rotateY(var(--ry, 0deg)) rotateX(var(--rx, 0deg)) translateZ(calc(var(--box-size) * .5));
transform: var(--transform);
}
.tree > .box > p:nth-child(2) { --ry: 180deg; --l2: .7; --l1: rgb(0 0 0 / .25) } /* back */
.tree > .box > p:nth-child(3) { --ry: -90deg; --l2: .5; --l1: rgb(0 0 0 / .125) } /* left */
.tree > .box > p:nth-child(4) { --ry: 90deg; --l2: .5; --l1: rgb(255 255 255 / .125) } /* right */
.tree > .box > p:nth-child(5) { --rx: 90deg; --l2: .6; --l1: rgb(255 255 255 / .25) } /* top */
.tree > .box > p:nth-child(6) { --rx: -90deg; --l2: .6; --l1: rgb(0 0 0 / .25) } /* bottom */
/* front */
.tree > .box > p:nth-child(1) { transform-origin: left; transition: transform 500ms ease; cursor: pointer }
.tree > .box:focus > p:nth-child(1){ transform: var(--transform) rotateY(-90deg) }
.tree > .box > p:nth-child(1)::after{
content: counter(days);
grid-area: 1/1;
place-self: center;
display: grid;
place-items: center;
width: 5vmin;
aspect-ratio: 1;
border-radius: 50%;
background-color: var(--wrap);
font-size: 2vmin;
font-family: system-ui, sans-serif;
color: var(--color);
font-weight: bold;
}
/* wrappings */
.tree &.........完整代码请登录后点击上方下载按钮下载查看
网友评论0