gsap实现立体书本点击摆正动画效果代码

代码语言:html

所属分类:动画

代码描述:gsap通过tweens实现立体书本书籍点击后自动摆正动画效果代码

代码标签: gsap 书本 书籍

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

<!DOCTYPE html>

<html lang="en">

<head>

    <meta charset="UTF-8">




    <style>
        *,
        *::before,
        *::after {
          box-sizing: border-box;
          transform-style: preserve-3d;
        }
        
        body {
          margin: 0;
          padding: 0;
          background: #eeeeeb;
          background: #FDF4E3;
          background: #FFFAEF;
          background: #F7F3EB;
          background: #fff;
          background: #c8c8c8;
          background: #FCF9DA;
          background: #FCECDA;
          background: #FFF2E3;
          background: #F7F1EA;
          overflow-x: hidden;
        }
        
        /* Cube mixing credit: @rolivaalonso */
        .grid {
          display: grid;
          grid-template-columns: repeat(auto-fit, minmax(3rem, 1fr));
          gap: 21vw;
          max-width: 140ch;
          margin: 4rem auto 4rem;
          margin-bottom: 10rem;
          padding: 1.5rem 3rem;
          padding-right: 13rem;
          height: 100%;
          width: 100%;
        }
        
        .face {
          position: absolute;
        }
        
        .cube {
          width: 25vw;
          height: 3vw;
          transform: perspective(9999px) rotateX(53deg) rotateZ(-50deg);
          transform: perspective(9999px) rotateX(53deg) rotateZ(-60deg);
          top: -50%;
          left: -50%;
          margin-bottom: 2.25rem;
        }
        .cube.front {
          width: 25vw;
          height: 3vw;
          -webkit-transform-origin: bottom left;
          -ms-transform-origin: bottom left;
          transform-origin: bottom left;
          -webkit-transform: rotateX(-90deg) translateZ(13vw);
          transform: rotateX(-90deg) translateZ(13vw);
        }
        .cube.back {
          width: 25vw;
          height: 3vw;
          -webkit-transform-origin: top left;
          -ms-transform-origin: top left;
          transform-origin: top left;
          -webkit-transform: rotateX(-90deg) rotateY(180deg) translateX(-25vw) translateY(-3vw);
          transform: rotateX(-90deg) rotateY(180deg) translateX(-25vw) translateY(-3vw);
        }
        .cube.right {
          width: 16vw;
          height: 3vw;
          -webkit-transform-origin: top left;
          -ms-transform-origin: top left;
          transform-origin: top left;
          -webkit-transform: rotateY(90deg) rotateZ(-90deg) translateZ(25vw) translateX(-16vw) translateY(-3vw);
          transform: rotateY(90deg) rotateZ(-90deg) translateZ(25vw) translateX(-16vw) translateY(-3vw);
        }
        .cube.left {
          width: 16vw;
          height: 3vw;
          -webkit-transform-origin: top left;
          -ms-transform-origin: top left;
          transform-origin: top left;
          -webkit-transform: rotateY(-90deg) rotateZ(90deg) translateY(-3vw);
          transform: rotateY(-90deg) rotateZ(90deg) translateY(-3vw);
        }
        .cube.bottom {
          width: 25vw;
          height: 16vw;
          -webkit-transform-origin: top left;
          -ms-transform-origin: top left;
          transform-origin: top left;
          -webkit-transform: rotateY(180deg) translateX(-25vw);
          transform: rotateY(180deg) translateX(-25vw);
        }
        .cube.top {
          width: 25vw;
          height: 16vw;
          -webkit-transform-origin: top left;
          -ms-transform-origin: top left;
          transform-origin: top left;
          -webkit-transform: translateZ(3vw);
          transform: translateZ(3vw);
        }
        .cube.front, .cube.back, .cube.right, .cube.left, .cube.top, .cube.bottom {
          background-color: #f06;
          background-color: #13D1C6;
          background-color: #fff;
          background-size: 100% 100%;
          background-repeat: no-repeat;
        }
        .cube.left {
          --b: .5;
          border-bottom: 3px solid #333;
          border-bottom: calc(var(--b) * 1vmin) solid #333;
          border-left: 3px solid #333;
          border-left: calc(var(--b) * 1vmin) solid #333;
          border-right: none;
          background: repeating-linear-gradient(to bottom, #eee 30%, #AAA 32%);
          background: repeating-linear-gradient(to bottom, #eee 20%, #ccc 32%);
          background: repeating-linear-gradient(to bottom, #eee 20%, #bbb 30%);
        }
        .cube.front, .cube.back {
          --b: .6;
          border-bottom: 3px solid #333;
          border-bottom: calc(var(--b) * 1vmin) solid #333;
          background: repeating-linear-gradient(to bottom, #fff 30%, #ddd 32%);
          background: repeating-linear-gradient(to b.........完整代码请登录后点击上方下载按钮下载查看

网友评论0