css实现柜子抽屉打开效果代码

代码语言:html

所属分类:动画

代码描述:css实现柜子抽屉打开效果代码

代码标签: 抽屉 打开 效果

下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开


<!DOCTYPE html>
<html lang="en" >

<head>

  <meta charset="UTF-8">
  
  
  
<style>
*,
*:after,
*:before {
  box-sizing: border-box;
  transform-style: preserve-3d;
  will-change: transform;
}
:root {
  --bg: #bcccdc;
  --hover: 0.05;
  --default: 0.01;
  --limit: 0.9;
  --height: 30;
  --width: 20;
  --depth: 15;
  --frame: 1;
  --handle: #ccc;
  --hue: 10;
  --saturation: 0%;
  --drawer-one: #fafafa;
  --drawer-two: #e6e6e6;
  --drawer-three: #f2f2f2;
  --unit-one: hsl(var(--hue), var(--saturation), 50%);
  --unit-two: hsl(var(--hue), var(--saturation), 40%);
  --unit-three: hsl(var(--hue), var(--saturation), 20%);
  --unit-four: hsl(var(--hue), var(--saturation), 15%);
  --transition: 0.2s;
}
body {
  background: var(--bg);
  display: grid;
  place-items: center;
  min-height: 100vh;
  transform: scale(1.5);
}
.chest {
  height: calc(var(--height) * 1vmin);
  transform: translate3d(0, 0, 50vmin) rotateX(-32deg) rotateY(40deg);
  width: calc(var(--width) * 1vmin);
  color: #1c1717;
}
.chest__panel {
  position: absolute;
}
.chest__panel--back {
  background: var(--unit-two);
}
.chest__panel--back,
.chest__panel--front {
  height: 100%;
  width: 100%;
  transform: translate3d(0, 0, calc(var(--depth) * var(--coefficient)));
}
.chest__panel--front-frame {
  height: 100%;
  width: 100%;
  border: calc(var(--frame) * 1vmin) solid var(--unit-one);
  border-bottom-width: calc(var(--frame) * 2vmin);
  transform: translate3d(0, 0, 0);
}
.chest__panel--front-frame:after,
.chest__panel--front-frame:before {
  content: '';
  background: var(--unit-one);
  height: calc(var(--frame) * 1.5vmin);
  width: calc(var(--width) * 1vmin);
  position: absolute;
  transform: translate(-50%, -50%);
  left: 50%;
}
.chest__panel--front-frame:after {
  top: calc(100 / 3 * 1.01%);
}
.chest__panel--front-frame:before {
  top: calc(100 / 3 * 2.01%);
}
.chest__panel--front {
  --coefficient: 0.5vmin;
}
.chest__panel--back {
  --coefficient: -0.5vmin;
}
.chest__panel--left,
.chest__panel--right {
  height: 100%;
  left: 50%;
  width: calc(var(--depth) * 1vmin);
  background: var(--unit-three);
  transform: translate(-50%, 0) rotateY(90deg) translate3d(0, 0, calc(var(--width) * var(--coefficient)));
}
.chest__panel--right {
  width: calc((var(--depth) * 1vmin) + 2px);
  --coefficient: 0.5vmin;
}
.chest__panel--left {
  --coefficient: -0.5vmin;
}
.chest__panel--top,
.chest__panel--bottom {
  height: calc(var(--depth) * 1vmin);
  width: calc(var(--width) * 1vmin);
  background: var(--unit-two);
}
.chest__panel--top {
  top: 0;
  width: calc((var(--width) * 1vmin) + 0.1vmin);
  height: calc((var(--depth) * 1vmin) + 0.1vmin);
  left: 50%;
  transform: translate(-50%, -50%) rotateX(-90deg);
}
.chest__panel--bottom {
  bottom: 0;
  transform: translate(0, 50%) rotateX(-90deg);
}
.chest__drawer {
  --drawer-height: calc((var(--height) - (5 * var(--frame))) / 3);
  position: absolute;
  top: var(--top, 0);
  left: 50%;
  height: calc(var(--drawer-height) * 1vmin);
  width: calc((var(--width) - (2 * var(--frame))) * 1vmin);
  transform: translate3d(-50%, 0, calc((var(--depth) * 0.5vmin) + 0.01vmin));
}
.chest__drawer[data-position="1"] {
  --index: 1;
  --top: calc(var(--frame) * 1vmin);
}
.chest__drawer[data-position="2"] {
  --index: 2;
  --top: calc(((2 * var(--frame)) + var(--drawer-height)) * 1vmin);
}
.chest__drawer[data-position="3"] {
  --index: 3;
  --top: calc(((3 * var(--frame)) + (2 * var(--drawer-height))) * 1vmin);
}
.drawer__structure {
  height: 100%;
  width: 100%;
  position: absolute;
  top: 0;
  left: 0;
}
.drawer__panel {
  position: absolute;
}
.drawer__panel--left,
.drawer__panel--right {
  width: calc(var(--depth) * 1vmin);
  height: 65%;
  background: var(--drawer-two);
  bottom: 1%;
}
.drawer__panel--left {
  left: 0;
  transform-origin: 0 50%;
  transform: rotateY(90deg);
}
.drawer__panel--right {
  right: calc((var(--frame) * 1vmin) + 1px);
  right: 0;
  transform-origin: 100% 50%;
  transform: rotateY(-90deg);
}
.drawer__panel--front {
  height: calc((var(--drawer-height) + (0.6 * var(--frame))) * 1vmin);
  width: calc((var(--width) - (0.6 * var(--frame))) * 1vmin);
  top: 50%;
  left: 50%;
  transform: translate3d(-50%, -50%, 1px);
  background: var(--unit-four);
}
.drawer__panel--bottom,
.drawer__panel--back {
  width: calc(100% - (2vmin * var(--frame)));
  width: 100%;
}
.drawer__panel--bottom {
  height: calc(var(--depth) * 1vmin);
  background: var(--drawer-three);
  bottom: 5%;
  left: 50%;
  transform-origin: 50% 100%;
  transform: translate(-50%, 0) rotateX(90deg);
}
.drawer__panel--back {
  height: 65%;
  background: var(--drawer-one);
  bottom: 1%;
  left: 50%;
  transform: translate3d(-50%, 0, calc(var(--depth) * -1vmin));
  text-align: center;
  line-height: calc(var(--drawer-height) * 0.65vmin);
  font-size: 3vmin;
  font-family: sans-serif;
.........完整代码请登录后点击上方下载按钮下载查看

网友评论0