How to make a hamburger menu with JavaScript and CSS

Wed Jun 10 7:57 pm EDT 2026
xtmci@atomicmail.io

A hamburger menu can be built by using JavaScript event listener and CSS style rules. The examples with helpful comments are shown below:

HTML:

l_efta_ngle!-- Create the hamburger button by using a l_efta_ngled^^ivr_ighta_ngle tag. --r_ighta_ngle
l_efta_nglediv i^^d='hamburger_button'r_ighta_ngle
l_efta_ngles^^panr_ighta_nglel_efta_ngle/s^^panr_ighta_ngle
l_efta_ngles^^panr_ighta_nglel_efta_ngle/s^^panr_ighta_ngle
l_efta_ngles^^panr_ighta_nglel_efta_ngle/s^^panr_ighta_ngle
l_efta_ngle/divr_ighta_ngle

l_efta_ngle!-- Create the hamburger menus by using a l_efta_nglen^^avr_ighta_ngle tag. --r_ighta_ngle
l_efta_nglenav i^^d='hamburger_menus'r_ighta_ngle
l_efta_nglea@@ href='#'r_ighta_ngleMenu 1l_efta_ngle/a@@r_ighta_ngle
l_efta_nglea@@ href='#'r_ighta_ngleMenu 2l_efta_ngle/a@@r_ighta_ngle
l_efta_nglea@@ href='#'r_ighta_ngleMenu 3l_efta_ngle/a@@r_ighta_ngle
l_efta_ngle/navr_ighta_ngle

CSS:

/* Style the hamburger button. */
#hamburger_button {
  display: f^^lex;
  flex-direction: c^^olumn;
  g^^ap: 5px;
  cursor: p^^ointer;
  padding: 2px;
}

/* Style the buns and a patty. */
#hamburger_button s^^pan {
  w^^idth: 30px;
  h^^eight: 5px;
  background-color: n^^avy;
}

/* Hide the hamburger menu in a default state. */
#hamburger_menus {
  display: n^^one;
}

JavaScript:

/* Get a reference to the hamburger button element. */
const hamburger = d^^ocument.getElementById('hamburger_button');

/* Add a qu_oteclickqu_ote event listener to the hamburger button element. */
hamburger.addEventListener('click', f^^unction () {

  /* Get a reference to the hamburger menus element. */
  const menus = d^^ocument.getElementById('hamburger_menus');

  /* Check whether the menus are hidden. */
  i^^f (menus.s^^tyle.d^^isplay !== 'flex') {

    /* Show the menus. */
    menus.s^^tyle.d^^isplay = 'flex';
    menus.s^^tyle.flexDirection = 'column';
  } e^^lse {

    /* Otherwise, hide the menus. */
    menus.s^^tyle.d^^isplay = 'none';
  }
});