css实现百叶窗拖动往下拉打开效果代码

代码语言:html

所属分类:拖放

代码描述:css实现百叶窗拖动往下拉打开效果代码

代码标签: css 百叶窗 拖动 往下 打开

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

<!DOCTYPE html>

<html lang="en">

<head>

    <meta charset="UTF-8">





    <style>
   
        @layer demo-stuff, container-stuff;
        
        @layer container-stuff {
          *, *:after, *:before {
            pointer-events: none;
          }
          .container {
            pointer-events: all;
            container-type: size;
          }
          @container (min-height: 75px) {
            .blinds {
              --open: 0;
            }
          }
          @container (min-height: 100px) {
            .peter {
              --peter: 0;
            }
          }
          @container (min-height: 80.5px) {
            .blinds {
              --open: 0.1;
            }
          }
          @container (min-height: 103px) {
            .peter {
              --peter: 0.1;
            }
          }
          @container (min-height: 86px) {
            .blinds {
              --open: 0.2;
            }
          }
          @container (min-height: 106px) {
            .peter {
              --peter: 0.2;
            }
          }
          @container (min-height: 91.5px) {
            .blinds {
              --open: 0.3;
            }
          }
          @container (min-height: 109px) {
            .peter {
              --peter: 0.3;
            }
          }
          @container (min-height: 97px) {
            .blinds {
              --open: 0.4;
            }
          }
          @container (min-height: 112px) {
            .peter {
              --peter: 0.4;
            }
          }
          @container (min-height: 102.5px) {
            .blinds {
              --open: 0.5;
            }
          }
          @container (min-height: 115px) {
            .peter {
              --peter: 0.5;
            }
          }
          @container (min-height: 108px) {
            .blinds {
              --open: 0.6;
            }
          }
          @container (min-height: 118px) {
            .peter {
              --peter: 0.6;
            }
          }
          @container (min-height: 113.5px) {
            .blinds {
              --open: 0.7;
            }
          }
          @container (min-height: 121px) {
            .peter {
              --peter: 0.7;
            }
          }
          @container (min-height: 119px) {
            .blinds {
              --open: 0.8;
            }
          }
          @container (min-height: 124px) {
            .peter {
              --peter: 0.8;
            }
          }
          @container (min-height: 124.5px) {
            .blinds {
              --open: 0.9;
            }
          }
          @container (min-height: 127px) {
            .peter {
              --peter: 0.9;
            }
          }
          @container (min-height: 130px) {
            .blinds {
              --open: 1;
            }
          }
          @container (min-height: 130px) {
            .peter {
              --peter: 1;
            }
          }
        }
        
        @layer demo-stuff {
          * {
            box-sizing: border-box;
            transform-style: preserve-3d;
          }
          :root {
            --height: 300px;
            --width: calc(0.6 * var(--height));
            --glass: rgba(207, 229, 252, 0.5);
            --shimmer: rgba(255, 255, 255, 0.95);
            --w-1: #546043;
            --w-2: #373c2f;
            --f-1: #251b0e;
            --f-2: #372915;
            --f-3: #5c4424;
            --f-4: #6e522b;
            --i-1: #574638;
            --b-1: #b5bea7;
            --b-4: #bfc7b3;
            --b-2: #6a7557;
            --b-3: #353b2b;
          }
          h1 {
            font-size: 100px;
            text-align: center;
            margin: 40px 0 0 0;
            color: hsl(0 0% 100%);
            letter-spacing: -1px;
            position: fixed;
            top: 50%;
            left: 50%;
            transform: translate3d(100%, 0%, 110vmin);
          }
          body {
            min-height: 100vh;
            display: grid;
            place-items: center;
            justify-content: center;
            overflow: hidden;
            background: rgba(255, 230, 153, 0.5);
            font-family: 'Impact', sans-serif;
          }
          .cuboid {
            width: 100%;
            height: 100%;
            position: relative;
            pointer-events: none;
          }
          .cuboid__side {
            pointer-events: none;
          }
          .cuboid__side:nth-of-type(1) {
            height: calc(var(--thickness) * 1px);
            width: 100%;
            position: absolute;
            top: 0;
            transform: translate(0, -50%) rotateX(90deg);
          }
          .cuboid__side:nth-of-type(2) {
            height: 100%;
            width: calc(var(--thickness) * 1px);
            position: absolute;
            top: 50%;
            right: 0;
            transform: translate(50%, -50%) rotateY(90deg);
          }
          .cuboid__side:nth-of-type(3) {
            width: 100%;
            height: calc(var(--thickness) * 1px);
            position: absolute;
            bottom: 0;
            transform: translate(0%, 50%) rotateX(90deg);
          }
          .cuboid__side:nth-of-type(4) {
            height: 100%;
            width: calc(var(--thickness) * 1px);
            position: absolute;
            left: 0;
            top: 50%;
            transform: translate(-50%, -50%) rotateY(90deg);
          }
          .cuboid__side:nth-of-type(5) {
            height: 100%;
            width: 100%;
            transform: translate3d(0, 0, calc(var(--thickness) * 0.5px));
            position: absolute;
            top: 0;
            left: 0;
          }
          .cuboid__side:nth-of-type(6) {
            height: 100%;
            width: 100%;
            transform: translate3d(0, 0, calc(var(--thickness) * -0.5px))
              rotateY(180deg);
            position: absolute;
            top: 0;
            left: 0;
          }
          .scene {
            transform: translateZ(100vmin) rotateX(-24deg) rotateY(24deg);
          }
          .window {
            height: var(--height);
            width: var(--width);
            position: relative;
          }
          .glass {
            height: calc(var(--height) * 0.25);
            width: 25%;
            position: absolute;
            top: 0;
            right: 0;
            background: linear-gradient(var(--i-1), var(--i-1)) 0 0/100% 5% no-repeat,
              linear-gradient(var(--i-1), var(--i-1)) 0 0/5% 100% no-repeat,
              linear-gradient(var(--i-1), var(--i-1)) 100% 0/5% 100% no-repeat,
              linear-gradient(var(--i-1), var(--i-1)) 0 100%/100% 5% no-repeat,
              linear-gradient(var(--i-1), var(--i-1)) 0 64%/100% 8% no-repeat,
              linear-gradient(
                130deg,
                transparent 0 15%,
                var(--shimmer) 16% 35%,
                transparent 36% 40%,
                var(--shimmer) 41% 44%,
                transparent 45%
              ),
              var(--glass);
          }
          .frame {
            position: absolute;
          }
          .frame--top {
            width: 130%;
            height: 5%;
            bottom: 100%;
            left: 50%;
            transform: translate(-50%, 0);
          }
          .frame--sill {
            width: 120%;
            height: 5%;
            top: 100%;
            left: 50%;
            background: var(--f-4);
            transform: translate3d(-50%, 0, 12px);
          }
          .frame--left {
            width: 10%;
            height: 100%;
            right: 100%;
            top: 0;
          }
          .frame--right {
            width: 10%;
            height: 100%;
            left: 100%;
            top: 0;
          }
          .peter {
            position: absolute;
            top: calc(var(--height) * 0.25);
            height: 35px;
            right: 0%;
            transform: translate(-10%, calc((-80 * var(--peter, 0)) * 1%));
          }
          .peter__container {
            height: calc(var(--height) * 0.25);
            width: 25%;
            position: absolute;
            top: 0;
            right: 0;
            overflow: hidden;
          }
          .wall {
            position: absolute;
            height: 200vmax;
            width: 200vmax;
            background: linear-gradient(
                var(--w-1) 52%,
                var(--f-1) 52% 53%,
                var(--w-2) 53% 100%
              ),
              var(--w-1);
          }
          .wall--top {
            bottom: calc(50% + (var(--height) * 0.5));
            left: 50%;
            transform: translate3d(-50%, 0, 10px);
            background: var(--w-1);
          }
          .wall--bottom {
            top: calc(50% + (var(--height) * 0.5));
            left: 50%;
            transform: translate3d(-50%, 0, 10px);
            background: var(--w-2);
          }
          .wall--left {
            right: calc(50% + (var(--width) * 0.5));
            top: 50%;
            transform: translate3d(0, -50%, 10px);
          }
          .wall--right {
            left: calc(50% + (var(--width) * 0.5));
            top: 50%;
            transform: translate3d(0, -50%, 10px);
          }
          .blinds {
            width: 25%;
            height: calc(var(--height) * 0.25);
            position: absolute;
            top: 0;
            right: 0;
          }
          .container {
            min-height: 25%;
            height: 25%;
            width: 100%;
            max-height: 130px;
            transform: translate3d(0, 0, 12px) scale(4);
            position: relative;
            overflow: hidden;
            resize: vertical;
            transform-origin: 100% 0;
            clip-path: inset(0 0 0 50%);
            -webkit-clip-path: inset(0 0 0 50%);
          }
          .container:hover:after {
            opacity: 0.35;
          }
          .container:active:after {
            opacity: 0;
          }
          .container:after {
            content: "";
            position: absolute;
            bottom: 0;
            right: 0;
            height: 16px;
            width: 16px;
            background: #19a1e6;
            opacity: 0;
            transition: opacity 0.2s;
          }
          .blind {
            width: 100%;
            height: 2.5%;
            background: linear-gradient(
              var(--b-3) 0 10%,
              var(--b-1) 10% 90%,
              var(--b-3) 90% 100%
            );
            transform: translate(
              0,
              calc(((-95 * (var(--index, 0))) * var(--open)) * 1%)
            );
          }
          .cord {
            position: absolute;
            top: 0;
            right: 4px;
            width: calc(var(--width) * 0.005);
            transform: translate(50%, 0);
            background: #fafafa;
            height: 100%;
          }
          .cord--dummy {
            background: #dbdbdb;
            right: 3px;
            height: calc(var(--height) * 0.21);
          }
          .cord__handle {
            position: absolute;
.........完整代码请登录后点击上方下载按钮下载查看

网友评论0