Stripe Like Desktop Navigation In Pure CSS - MalikDzgn
  • Jelajahi

    Copyright © MalikDzgn -

    mercredi 17 février 2021

    Stripe Like Desktop Navigation In Pure CSS

    Stripe Like Desktop Navigation In Pure CSS

     

    Stripe Like Desktop Navigation In Pure CSS

    Category: CSS & CSS3 , Menu & Navigation | January 18, 2021
    AUTHOR:smpnjn
    VIEWS TOTAL:191 views
    OFFICIAL PAGE:Go to website
    LAST UPDATE:January 18, 2021
    LICENSE:MIT

    Preview:

    Stripe Like Desktop Navigation In Pure CSS

    Description:

    If you like the stripe-desktop-menu you shouldn’t miss this project that lets you create a Stripe.com like follow along navigation menu using pure CSS/CSS3.

    See It In Action:

    How to use it:

    1. Build the HTML structure for the Stripe navigation menu.

    <nav id="menu">
      <div class="menu-item">
        <div class="menu-text">
          <a href="#">Products</a>
        </div>
        <div class="sub-menu">
          <div class="icon-box">
            <div class="icon"><i class="fal fa-wind-turbine"></i></div>
            <div class="text">
              <div class="title">Turbo Editor <i class="far fa-arrow-right"></i></div>
              <div class="sub-text">Edit your code while slowing down time.</div>
            </div>
          </div>
          <div class="icon-box">
            <div class="icon"><i class="fal fa-lightbulb-on"></i></div>
            <div class="text">
              <div class="title">Idea Creator <i class="far fa-arrow-right"></i></div>
              <div class="sub-text">Think of an idea, and have an AI create it.</div>
            </div>
          </div>
          <div class="icon-box">
            <div class="icon"><i class="fal fa-bomb"></i></div>
            <div class="text">
              <div class="title">Super Collider <i class="far fa-arrow-right"></i></div>
              <div class="sub-text">Remove mass from any object.</div>
            </div>
          </div>
          <div class="sub-menu-holder"></div>
        </div>
      </div>
      <div class="menu-item highlight">
        <div class="menu-text">
          <a href="#">Services</a>
        </div>
        <div class="sub-menu double">
          <div class="icon-box gb a">
            <div class="icon"><i class="far fa-question-circle"></i></div>
            <div class="text">
              <div class="title">Consult <i class="far fa-arrow-right"></i></div>
              <div class="sub-text">From Professionals</div>
            </div>
          </div>
          <div class="icon-box gb b">
            <div class="icon"><i class="far fa-users-class"></i></div>
            <div class="text">
              <div class="title">Teach <i class="far fa-arrow-right"></i></div>
              <div class="sub-text">In Classroom</div>
            </div>
          </div>
          <div class="icon-box gb c">
            <div class="icon"><i class="far fa-school"></i></div>
            <div class="text">
              <div class="title">Learn <i class="far fa-arrow-right"></i></div>
              <div class="sub-text">By Video</div>
            </div>
          </div>
          <div class="icon-box gb d">
            <div class="icon"><i class="far fa-chess-rook"></i></div>
            <div class="text">
              <div class="title">Keep <i class="far fa-arrow-right"></i></div>
              <div class="sub-text">The Castle</div>
            </div>
          </div>
          <div class="icon-box gb e">
            <div class="icon"><i class="far fa-video-plus"></i></div>
            <div class="text">
              <div class="title">Become <i class="far fa-arrow-right"></i></div>
              <div class="sub-text">A Creator</div>
            </div>
          </div>
          <div class="icon-box gb f">
            <div class="icon"><i class="far fa-cat"></i></div>
            <div class="text">
              <div class="title">Understand <i class="far fa-arrow-right"></i></div>
              <div class="sub-text">Our Journey</div>
            </div>
          </div>
          <div class="bottom-container">
            Ready to dive in? <a href="#">Get Started</a>
          </div>
          <div class="sub-menu-holder"></div>
        </div>
      </div>
      <div class="menu-item highlight">
        <div class="menu-text">
          <a href="#">Support</a>
        </div>
        <div class="sub-menu triple">
          <div class="top-container gb c icon-box">
            <div class="icon big"><i class="far fa-book"></i></div>
            <div class="text">
              <div class="title">Where to start</div>
              <div class="sub-text">Find out where to begin below</div>
            </div>
          </div>
          <div class="box">
            <h3>Your Journey</h3>
            <a href="#">Get Started</a>
            <a href="#">Learn the Basics</a>
            <a href="#">Get Advanced</a>
            <a href="#">Start Teaching</a>
          </div>
          <div class="box">
            <h3>Your Tools</h3>
            <a href="#">Turbo Editor</a>
            <a href="#">Time Stopper</a>
            <a href="#">Brain Enhancer</a>
            <a href="#">Network Maker</a>
          </div>
          <div class="icon-box flat">
            <div class="icon"><i class="fal fa-plug"></i></div>
            <div class="text">
              <div class="title">API Guide <i class="far fa-arrow-right"></i></div>
            </div>
          </div>
          <div class="icon-box flat">
            <div class="icon"><i class="fal fa-comments"></i></div>
            <div class="text">
              <div class="title">Support Line <i class="far fa-arrow-right"></i></div>
            </div>
          </div>
          <div class="icon-box flat">
            <div class="icon"><i class="fal fa-phone-volume"></i></div>
            <div class="text">
              <div class="title">Live Chat <i class="far fa-arrow-right"></i></div>
            </div>
          </div>
          <div class="icon-box flat">
            <div class="icon"><i class="fal fa-book-spells"></i></div>
            <div class="text">
              <div class="title">Documentation <i class="far fa-arrow-right"></i></div>
            </div>
          </div>
        </div>
      </div>
      <div class="menu-item">
        <div class="menu-text">
          <a href="#">Community</a>
        </div>
        <div class="sub-menu">
          <div class="icon-box">
            <div class="icon"><i class="far fa-satellite"></i></div>
            <div class="text">
              <div class="title">Forum <i class="far fa-arrow-right"></i></div>
              <div class="sub-text">Join our passionate community.</div>
            </div>
          </div>
          <div class="icon-box">
            <div class="icon"><i class="fab fa-twitter-square"></i></div>
            <div class="text">
              <div class="title">Twitter <i class="far fa-arrow-right"></i></div>
              <div class="sub-text">Follow us on twitter.</div>
            </div>
          </div>
          <div class="icon-box">
            <div class="icon"><i class="fab fa-twitch"></i></div>
            <div class="text">
              <div class="title">Live Stream <i class="far fa-arrow-right"></i></div>
              <div class="sub-text">We stream content every day.</div>
            </div>
          </div>
          <div class="sub-menu-holder"></div>
        </div>
      </div>
      <div id="sub-menu-container">
        <div id="sub-menu-holder">
          <div id="sub-menu-bottom">
          </div>
        </div>
      </div>
    </nav>

    2. The necessary CSS & CSS styles:

    :root {
      --menu-width: 37.5em; /* Width of menu */
      --items: 4; /* Number of items you have */
      --item-width: calc(var(--menu-width) / var(--items));
    }
    
    nav {
      width: var(--menu-width);
      display: flex;
      transform-style: preserve-3d;
      justify-content: space-evenly;
      position: relative;
      z-index: 2;
      margin: 0px auto;
      perspective: 2000px;
      flex-wrap: wrap;
      top: 3em;
    }
    
    nav .menu-item {
      color: white;
      font-weight: 600;
      transform-style: preserve-3d;
      flex-grow: 1;
      display: flex;
      flex-basis: var(--item-width);
      box-sizing: border-box;
      padding: 1em 1.5em;
      justify-content: center;
      perspective: 200px;
      letter-spacing: 0.5px;
      min-height: 7.5em;
    }
    
    nav .menu-text, nav .menu-text a {
      font-size: 1em;
      color: white;
      text-decoration: none;
      text-shadow: 0 1px 5px rgba(0,0,0,0.1);
      transition: color 0.1s ease-out;
      text-align: center;
    }
    
    nav .menu-text a:hover {
      color: rgba(255,255,255,0.5);
    }
    
    #sub-menu-holder {
      pointer-events: none;
      color: rgba(0,0,0,0.5);
      font-weight: normal;
      padding: 1em;
      position: absolute;
      transition: opacity 2 ease-out;
      transform: rotateX(-25deg) scale(1);
      transform-origin: 50% 7em 0em;
      opacity: 0;
      box-shadow: 0 2px 7px rgba(0,0,0,0.1), 0 2px 20px rgba(0,0,0,0.3);
      box-sizing: border-box;
      top: 3rem;
      border-radius: 10px;
      background: white;
      display: block;
      height: 300px;
      width: calc(var(--menu-width) * 1.5);
    }
    
    #sub-menu-container {
      position: absolute;
      z-index: -1;
      min-width: 100%;
      top: 2.5em;
      width: 100%;
    }
    
    nav .menu-item:hover ~ #sub-menu-container #sub-menu-holder {
      animation: clipPath 0.25s ease-out 1 forwards;        
      transition: clip-path 0.25s ease-out, left 0.15s ease-out, height 0.15s ease-out;
      opacity: 1;
      right: auto;
    }
    
    nav .menu-item:nth-of-type(1):hover ~ #sub-menu-container #sub-menu-holder,
    nav .menu-item:nth-of-type(4):hover ~ #sub-menu-container #sub-menu-holder {
      clip-path: inset(0 28.75em 0 0 round 10px);
      height: 14em;
    }
    
    nav .menu-item:nth-of-type(2):hover ~ #sub-menu-container #sub-menu-holder,
    nav .menu-item:nth-of-type(3):hover ~ #sub-menu-container #sub-menu-holder {
      clip-path: inset(0 15em 0 0 round 10px);
    }
    
    nav .menu-item:nth-of-type(1):hover ~ #sub-menu-container #sub-menu-holder {
      left: calc(-9em + -1px);
    }
    
    nav .menu-item:nth-of-type(2):hover ~ #sub-menu-container #sub-menu-holder {
      left: calc(-6.5em + -1px);
      height: 18.75em;
    }
    
    nav .menu-item:nth-of-type(3):hover ~ #sub-menu-container #sub-menu-holder {
      left: calc(2.75em + 1px);
      height: 24.5em;
    }
    
    nav .menu-item:nth-of-type(4):hover ~ #sub-menu-container #sub-menu-holder {
      left: calc(19em + 1px);
    }
    
    .menu-item .sub-menu {
      position: absolute;
      top: 7em;
      color: rgba(0,0,0,0.5);
      border-radius: 10px;
      min-width: 27.5em;
      pointer-events: none;
      box-sizing: border-box;
      z-index: 999;
      margin-left: -5em;
      clip-path: inset(0 10em 10em 15em);
      opacity: 0;
      font-weight: initial;
      padding: 1.5em;
      transition: all 0.25s ease-out, opacity 0.25s ease-in, margin-left 0.25s ease-out, clip-path 0.15s ease-out;
    }
    
    .menu-item .sub-menu.double {
      min-width: 41.25em;
      height: 18.75em;
      display: grid;
      grid-template-columns: 54% 50%;
    }
    
    .menu-item .sub-menu.triple {
      min-width: 41.25em;
      height: 25em;
      display: grid;
      padding: 1.5em 2.5em;
      grid-template-columns: 55% 45%;
    }
    
    .menu-item:hover .sub-menu {
      pointer-events: all;
      clip-path: inset(0 0 0 0);
    }
    
    .menu-text:after {
      transition: bottom 0.25s ease-out, opacity 0.01s ease-out 0.01s;
      opacity: 0;
      content: '';
      position: absolute;
      pointer-events: none;
      bottom: -5em;
      left: calc(50% - 10px);
      border-color: transparent transparent white transparent;
      border-width: 10px;
      border-style: solid;
    }
    
    .menu-item:hover .menu-text:after {
      bottom: 0.5em;
      opacity: 1;
      transition: bottom 0.25s ease-out, opacity 0.01s ease-out 0.15s;
    }
    
    .menu-item:hover .sub-menu {
      opacity: 1;
      margin-left: 0;
    }
    
    .menu-item:hover ~ #sub-menu-container #sub-menu-holder  {
      transition: transform 0.25s ease-out, opacity 0.25s ease-out, clip-path 0.25s ease-out;
    }
    
    @keyframes clipPath {
      0% {
          opacity: 0;
      }
      100% {
          transform: rotateX(0deg) scale(1);
          top: 4.5em;
          opacity: 1;        
      }
    }
    
    /* Menu specific */
    .menu-item .title {
      font-weight: 500;
      color: rgb(44 70 86);
      margin: 0 0 0.25em 0;
    }
    
    .menu-item .icon-box * {
      transition: all 0.1s ease-out;
      position: relative;
    }
    
    .menu-item .icon-box.space {
      margin-bottom: 1.25em;
    }
    
    .menu-item .icon-box.flat {height: 1.5em;margin-bottom: 0.5em;}
    .menu-item .icon, .menu-item .text {
      float: left;
      color: #9ea9af;
    }
    
    .menu-item .icon {
      color: rgb(44 70 86);
      font-size: 1.25em;
      margin: 0 1em 0 0;
    }
    
    .menu-item .icon-box {
      cursor: pointer;
    }
    
    .menu-item .icon-box {
      float: left;
      width: 100%;
      margin: 0;
      height: 4em;
      row-gap: 0;
      line-height: 1em;
    }
    
    .menu-item .icon-box .text i {
      clip-path: inset(0 100% 0 0);
      font-size: 0.75em;
      position: relative;
      top: -1px;
    }
    
    /* Base Icon Style */
    .icon-box.gb .icon i:before {
      background: linear-gradient(45deg, #0c86ef, #0cef9b);
      -webkit-text-fill-color: transparent;
      -webkit-background-clip: text;
      padding-left: 1px;
    }
    
    /* Define Icon Colors */
    .icon-box.gb.a .icon i:before {background-image: linear-gradient(45deg, #2ca7ff 35%, #31d078 75%);}
    .icon-box.gb.b .icon i:before {background-image: linear-gradient(45deg, #f32b2b 35%, #efbe0c 75%);}
    .icon-box.gb.c .icon i:before {background-image: linear-gradient(45deg, #7176ff 35%, #b26cea 75%);}
    .icon-box.gb.d .icon i:before {background-image: linear-gradient(45deg, #79c76f 35%, #bed09b 75%);}
    .icon-box.gb.e .icon i:before {background-image: linear-gradient(45deg, #6082ff 35%, #ff5dbe 75%);}
    .icon-box.gb.f .icon i:before {background-image: linear-gradient(45deg, #808080 35%, #bbbbbb 75%);}
    
    .menu-item .icon-box:hover .text i {
      clip-path: inset(0 0 0 0);
      transition: clip-path 0.1s ease-out;
    }
    
    .menu-item .icon-box:hover .icon, .menu-item .icon-box:hover .title, .menu-item .icon-box:hover .sub-text {
      color: rgb(89 110 123);
    }
    
    #sub-menu-bottom {
      background: #d4e3ea70;
      position: absolute;
      bottom: 0;
      opacity: 0;
      transition: all 0.25s ease-out, height 0.1s ease-out;
      left: 0;
      width: 100%;
      height: 5em;
    }
    
    nav .menu-item:nth-of-type(3).highlight:hover ~ #sub-menu-container #sub-menu-holder #sub-menu-bottom {
      height: 7.5em;
    }
    
    .bottom-container {
      grid-area: 4 / -3 / 4 / 3;
      padding-top: 1.5em;
      color: #3a5260;
      font-weight: 500;
    }
    
    .top-container {
      grid-area: 1 / -3 / 1 / 3;
      margin: 0 0 2em 0;
    }
    
    .bottom-container a {
      float: right;
      background: linear-gradient(90deg, #8ea4b166, #a3b5bf6b);
      padding: 0.5em 1em;
      border-radius: 100px;
      position: absolute;
      color: #2c4655bf;
      font-weight: bold;
      text-decoration: none;
      right: 1.5em;
      bottom: 1.5em;
    }
    
    .bottom-container a:hover {
      background: linear-gradient(90deg, #8ea4b136, #a3b5bf33);
    }
    
    .sub-menu h3 {
      font-size: 1em;
      text-transform: uppercase;
      letter-spacing: 0.5px;
      color: rgb(44 70 86 / 68%);
      margin: 0.75em 0;
    }
    
    .sub-menu .box a {
      width: 100%;
      float: left;
      font-size: 1em;
      line-height: 1.75em;
      color: #7a8a94;
      text-decoration: none;
    }
    
    .sub-menu .box a:hover {
      color: rgb(44 70 86);
    }
    
    .box {
      margin: 0 0 3em 0;
    }
    
    .icon.big i {
      font-size: 1.25em;
      top: 0.2em;
    }
    
    nav .menu-item.highlight:hover ~ #sub-menu-container #sub-menu-holder #sub-menu-bottom { opacity: 1; }

    Share with your friends

    Give us your opinion
    Show Comments
    Close Comment