Skip to content
Snippets Groups Projects
Select Git revision
  • febcd3acad570b2eb3127a2f1f5e182ffb19e1e8
  • master default
  • goodpaths
  • movie-page
  • front-bilel
  • vieille-branche
  • octofront
  • branche-TP-de-Tom
8 results

Banner.vue

Blame
  • BurgerMenu.vue 5.50 KiB
    <template>
    <div id="root">
      <div id="topnav" class="topnav">
        <a id="home_link" class="topnav_link" href="/">HOME</a>
    
        <!-- Classic Menu -->
        <nav role="navigation" id="topnav_menu">
          <a class="topnav_link" href="/about">ABOUT</a>
          <a class="topnav_link" href="/counter">COUNTER</a>
          <a class="topnav_link" href="/users">USER</a>
        </nav>
    
        <a id="topnav_hamburger_icon" href="javascript:void(0);" onclick="showResponsiveMenu()">
          <!-- Some spans to act as a hamburger -->
          <span></span>
          <span></span>
          <span></span>
        </a>
    
        <!-- Responsive Menu -->
        <nav role="navigation" id="topnav_responsive_menu">
          <ul>
            <li><a href="/">HOME</a></li>
            <li><a href="/about">ABOUT</a></li>
            <li><a href="/contact-us">CONTACT</a></li>
            <li><a href="/privacy-policy">PRIVACY POLICY</a></li>
            <li><a href="/terms-and-conditions">TERMS AND CONDITIONS</a></li>
          </ul>
        </nav>
      </div>
    </div>
    </template>
    
    <script>
    export default {
        methods: {
        showResponsiveMenufunction: function () {
        var menu = document.getElementById("topnav_responsive_menu");
        var icon = document.getElementById("topnav_hamburger_icon");
        var root = document.getElementById("root");
        if (menu.className === "") {
            menu.className = "open";
            icon.className = "open";
            root.style.overflowY = "hidden";
        } else {
            menu.className = "";                    
            icon.className = "";
            root.style.overflowY = "";
        }
    },
    },
    };
    </script>
    
    <style scoped>
    /* ******************** NAV BAR ******************** */
    .topnav {
      background-color: #912F56;
      display: flex;
      align-items: center;
      width: 100%;
    }
    .topnav_link {
      color: white;
      padding: 12px;
      text-decoration: none;
    }
    .topnav_link:hover {
      color: #0078b4;
    }
    
    /* hide responsive menu */
    #topnav_hamburger_icon,
    #topnav_responsive_menu {
      display: none;
    }
    
    @media only screen and (max-width: 768px) {
      /* hide classic menu */
      #topnav_menu {
        display: none;
      }
    
      /* position home link at left and hamburger at right */
      #home_link {
        flex-grow: 1;
      }
    
      /* disable horizontal scrolling  */
      #root {
        overflow-x: hidden;
        position: absolute;
      }
    
      /* show responsive menu and position at the right of the screen */
      #topnav_responsive_menu {
        display: block;
        position: absolute;
        margin: 0;
        right: 0;
        top: 0;
        width: 100vw;
        height: 100vh;
    
        z-index: 99;
    
        transform-origin: 0% 0%;
        transform: translate(200%, 0);
    
        transition: transform 0.5s cubic-bezier(0.77, 0.2, 0.05, 1);
      }
    
      #topnav_responsive_menu ul {
        display: flex;
        flex-direction: column;
    
        position: absolute;
        margin: 0;
        right: 0;
        top: 0;
    
        min-width: 50vw;
        height: 100vh;
        padding: 56px 0 0;
    
        text-align: center;
    
        background: #ededed;
        list-style-type: none;
        -webkit-font-smoothing: antialiased;
      }
    
      #topnav_responsive_menu li {
        padding: 12px 24px;
      }
    
      #topnav_responsive_menu a {
        white-space: nowrap;
        color: #333;
        text-decoration: none;
      }
    
      /* And let's slide it in from the right */
      #topnav_responsive_menu.open {
        transform: none;
        position: fixed;
      }
    
      /* ******************** HAMBURGER ICON ******************** */
      /* define size and position of the hamburger link */
      #topnav_hamburger_icon {
        display: block;
        position: relative;
        margin: 16px;
        width: 33px;
        height: 28px;
    
        z-index: 100;
    
        -webkit-user-select: none;
        user-select: none;
        cursor: pointer;
      }
    
      /* define the style (size, color, position, animation, ...) of the 3 spans */
      #topnav_hamburger_icon span {
        display: block;
        position: absolute;
        height: 4px;
        width: 100%;
        margin-bottom: 5px;
    
        background: #ededed;
        border-radius: 3px;
    
        z-index: 100;
    
        opacity: 1;
        left: 0;
    
        -webkit-transform: rotate(0deg);
        -moz-transform: rotate(0deg);
        -o-transform: rotate(0deg);
        transform: rotate(0deg);
        -webkit-transition: 0.25s ease-in-out;
        -moz-transition: 0.25s ease-in-out;
        -o-transition: 0.25s ease-in-out;
        transition: 0.25s ease-in-out;
      }
    
      /* set the 3 spans position to look like a hamburger */
      #topnav_hamburger_icon span:nth-child(1) {
        top: 0px;
        -webkit-transform-origin: left top;
        -moz-transform-origin: left top;
        -o-transform-origin: left top;
        transform-origin: left top;
      }
      #topnav_hamburger_icon span:nth-child(2) {
        top: 12px;
        -webkit-transform-origin: left center;
        -moz-transform-origin: left center;
        -o-transform-origin: left center;
        transform-origin: left center;
      }
      #topnav_hamburger_icon span:nth-child(3) {
        top: 24px;
        -webkit-transform-origin: left bottom;
        -moz-transform-origin: left bottom;
        -o-transform-origin: left bottom;
        transform-origin: left bottom;
      }
    
      /* change color when opening the menu */
      #topnav_hamburger_icon.open span {
        background: #333;
      }
    
      /* the first span rotates 45° \ */
      #topnav_hamburger_icon.open span:nth-child(1) {
        width: 110%;
        -webkit-transform: rotate(45deg);
        -moz-transform: rotate(45deg);
        -o-transform: rotate(45deg);
        transform: rotate(45deg);
      }
    
      /* the second span disappears */
      #topnav_hamburger_icon.open span:nth-child(2) {
        width: 0%;
        opacity: 0;
      }
    
      /* the last span rotates -45° / */
      #topnav_hamburger_icon.open span:nth-child(3) {
        width: 110%;
        -webkit-transform: rotate(-45deg);
        -moz-transform: rotate(-45deg);
        -o-transform: rotate(-45deg);
        transform: rotate(-45deg);
      }
    }
    </style>