https://medium.com/@heyoka/responsive-pure-css-off-canvas-hamburger-menu-aebc8d11d793 Also viewable in GitHub Repo: https://gist.github.com/markcaron ---------------------------------------------------Original Code from Source----------------------------------------------------------------------- ---------------------------------------HTML-------------------------------------------------------
Open main menu

hamburgers

---------------------------------------CSS------------------------------------------------------- /* Screen reader only */ .sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0,0,0,0); border: 0; } /* Button styling */ .menu-toggle { display: inline-block; padding: .75em 15px; line-height: 1em; font-size: 1em; color: #333; } .menu-toggle:hover, .menu-toggle:focus { color: #c00; } /* Default styles + Mobile first Offscreen menu style */ .main-menu { position: absolute; display: none; left: -200px; top: 0; height: 100%; overflow-y: scroll; overflow-x: visible; transition: left 0.3s ease, box-shadow 0.3s ease; z-index: 999; } .main-menu ul { list-style: none; margin: 0; padding: 2.5em 0 0; /* Hide shadow w/ -8px while 'closed' */ -webkit-box-shadow: -8px 0 8px rgba(0,0,0,.5); -moz-box-shadow: -8px 0 8px rgba(0,0,0,.5); box-shadow: -8px 0 8px rgba(0,0,0,.5); min-height: 100%; width: 200px; background: #1a1a1a; } .main-menu a { display: block; padding: .75em 15px; line-height: 1em; font-size: 1em; color: #fff; text-decoration: none; border-bottom: 1px solid #383838; } .main-menu li:first-child a { border-top: 1px solid #383838; } .main-menu a:hover, .main-menu a:focus { background: #333; text-decoration: underline; } .main-menu .menu-close { position: absolute; right: 0; top: 0; } /* More to come here... */ /* Demo purposes only */ *, *:before, *:after { box-sizing: border-box; } header { padding: 20px; display: flex; align-items: baseline; } article { padding: 30px; width: 55em; font-size: 16px; line-height: 1.5em; } article h2 { font-weight: 500; font-size: 28px; } .logo { margin: 0 30px 0 10px; font-size: 1.5em; } /* On small devices, allow it to toggle... */ /* :target for non-JavaScript [aria-expanded] will be used if/when JavaScript is added to improve interaction, though it's completely optional. */ .main-menu:target, .main-menu[aria-expanded="true"] { display: block; left: 0; outline: none; -moz-box-shadow: 3px 0 12px rgba(0,0,0,.25); -webkit-box-shadow: 3px 0 12px rgba(0,0,0,.25); box-shadow: 3px 0 12px rgba(0,0,0,.25); } .main-menu:target .menu-close, .main-menu[aria-expanded="true"] .menu-close { z-index: 1001; } .main-menu:target ul, .main-menu[aria-expanded="true"] ul { position: relative; z-index: 1000; } /* We could us `.main-menu:target:after`, but it wouldn't be clickable. */ .main-menu:target + .backdrop, .main-menu[aria-expanded="true"] + .backdrop{ position: absolute; display: block; left: 0; top: 0; width: 100%; height: 100%; z-index: 998; background: #000; background: rgba(0,0,0,.85); cursor: default; } @supports (position: fixed) { .main-menu, .main-menu:target + .backdrop, .main-menu[aria-expanded="true"] + .backdrop{ position: fixed; } } -------------------------------------------------------------- Edited code for site------------------------------------------------------------------------------------- ---------------------------------------HTML------------------------------------------------------- ---------------------------------------CSS------------------------------------------------------- .menu-toggle { display: inline-block; padding: 15px; } .main-menu { position: absolute; display: none; left: -200px; top: 0; height: 240px; transition: left 0.3s ease, box-shadow 0.3s ease; z-index: 999; } .main-menu ul { list-style: none; margin: 0; padding: 2.5em 0 0; height: 240px; width: 200px; background: #1a1a1a; } .main-menu a { display: block; padding: .75em 15px; line-height: 1em; font-size: 1em; color: #fff; text-decoration: none; border-bottom: 1px solid #383838; } .small-link{ font-size: 0.7em; } .main-menu li:first-child a { border-top: 1px solid #383838; } .main-menu a:hover, .main-menu a:focus { background: #333; text-decoration: underline; } .main-menu .menu-close { position: absolute; right: 0; top: 0; } /* Inside the pop-out menu --------------------------------- */ .main-menu:target, .main-menu[aria-expanded="true"] { display: block; left: 0; outline: none; } .main-menu:target .menu-close, .main-menu[aria-expanded="true"] .menu-close { z-index: 1001; } .main-menu:target ul, .main-menu[aria-expanded="true"] ul { position: relative; z-index: 1000; }