Home Codepen Home Only CSS: Metal

Home Only CSS: Metal

Home Only CSS: Metal

470
0

See the Pen
Only CSS: Metal
by Yusuke Nakaya (@YusukeNakaya)
on CodePen.

HTML

mixin cameras
  .container
    //- - for (i = 0; i < 441; i++)
    //-   .trigger
    .monitor
      .camera.-z
        .camera.-y
          .camera.-x
            block

+cameras
  .cube
    .scale
      .rotate
        .surface.-a
        .surface.-b
        .surface.-c
        .surface.-d
        .shadow

CSS

// Custom param *** START
$power: 20;
$defaultRotateX: 0;
$defaultRotateY: 0;
$defaultRotateZ: 0;
$perspective: 500px;
// Custom param *** END

// Your world *** START
.abc {
  display: flex;
  justify-content: center;
  align-items: center;
  width: 200px;
  height: 200px;
  background: #000;
  color: #fff;
  font-family: 'Barlow Semi Condensed', sans-serif;
}

.cube {
  .scale {
    transform: scale(1.2, 0.7);
  }

  .surface {
    position: absolute;
    width: 200px;
    height: 200px;
    top: -100px;
    left: -100px;
    // background: rgba(#333, 1);
    background: linear-gradient(-30deg, #333, #555);
    overflow: hidden;
    
    &::before {
      content: '';
      position: absolute;
      width: 300%;
      height: 300%;
      top: -150%;
      background: radial-gradient(closest-side, #fff 0%, #fff 20%, #333 100%);
      filter: blur(50px);
      transform: translateX(-100%);
      animation: refrection 10000ms ease-out infinite;
    }
    
    &.-a {
      transform: rotateY(0deg) translateZ(100px);
      
      &::before {
        animation-delay: 0ms - 1000ms;
      }
    }
    
    &.-b {
      transform: rotateY(180deg) translateZ(100px);
      
      &::before {
        animation-delay: 5000ms - 1000ms;
      }
    }
    
    &.-c {
      transform: rotateY(90deg) translateZ(100px);
      
      &::before {
        animation-delay: 2500ms - 1000ms;
      }
    }
    
    &.-d {
      transform: rotateY(-90deg) translateZ(100px);
      
      &::before {
        animation-delay: 7500ms - 1000ms;
      }
    }
  }
  
  .shadow {
    position: absolute;
    width: 200px;
    height: 200px;
    top: -100px;
    left: -100px;
    background: rgba(#000, 0.6);
    filter: blur(30px);
    transform: rotateX(-90deg) translateZ(130px) scale(0.92);
  }
  
  .rotate {
    // transform: rotateY(45deg);
    animation: rotation 10000ms linear infinite;
  }
}

@keyframes rotation {
  0% {
    transform: rotateY(0deg);
  }
  
  100% {
    transform: rotateY(-360deg);
  }
}

@keyframes refrection {
  0% {
    transform: translateX(-100%);
  }
  
  90% {
    transform: translateX(100%);
  }
  
  100% {
    transform: translateX(100%);
  }
}
// Your world *** END

// Template *** START
div {
  transform-style: preserve-3d;
}

body {
  display: grid;
  place-items: center;
  height: 100vh;
  background: radial-gradient(#333, #111, #000);
}

.container {
  position: relative;
  display: grid;
  grid-template-rows: repeat(21, 4.77vh);
  grid-template-columns: repeat(21, 4.77vw);
  transform-style: preserve-3d;
  cursor: zoom-in;
  
  &:active {
    .monitor {
      transform: scale3d(2,2,2);
    }
  }
}

.monitor {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  pointer-events: none;
  perspective: $perspective;
  transition: 1000ms;
}

// .trigger {
//   position: relative;
  
//   @for $i from 1 through 21 {
//     @for $j from 1 through 21 {
//       $key: ($i - 1) * 21 + $j;
      
//       &:nth-child(#{$key}) {
//         &:hover ~ .monitor {
//           .camera {
//             &.-x {
//               transform: rotateX(($i - 11deg) * $power);
//             }
            
//             &.-y {
//               transform: rotateY(($j - 11deg) * $power);
//             }
//           }
//         }
//       }
//     }
//   }
// }

.camera {
  position: absolute;
  display: flex;
  justify-content: center;
  align-items: center;
  width: 100%;
  height: 100%;
  transition: 500ms;
  
  &.-x {
    transform: rotateX($defaultRotateX + 0deg);
  }
  
  &.-y {
    transform: rotateY($defaultRotateY + 0deg);
  }
  
  &.-z {
    transform: rotateY($defaultRotateZ + 0deg);
  }
}
// Template *** END

Stupendo cubo che zomma quando clicchi nel main o nell’oggetto stesso.

SOURCEYusuke Nakaya
Previous articleCome distruggere (eliminare) una sessione PHP
Next articleCome ottenere Client ID e Chiave segreta di PayPal

LEAVE A REPLY

Please enter your comment!
Please enter your name here