Author: | havardob |
---|---|
Views Total: | 10,209 views |
Official Page: | Go to website |
Last Update: | March 3, 2017 |
License: | MIT |
Preview:

Description:
A pure HTML/CSS side navigation that morphs the hamburger toggle button into a fullscreen nav menu using CSS3 transitions and transforms.
How to use it:
Wrap the menu items and toggle button into a label element as this:
<label> <input type="checkbox"> <span class="menu"> <span class="hamburger"></span> </span> <ul> <li> <a href="#">Home</a> </li> <li> <a href="#">About</a> </li> <li> <a href="#">Contact</a> </li> </ul> </label>
Style the hamburger menu toggle.
label .hamburger { position: absolute; top: 135px; left: 50px; width: 30px; height: 2px; background: #000; display: block; -webkit-transform-origin: center; transform-origin: center; -webkit-transition: .5s ease-in-out; transition: .5s ease-in-out; } label .hamburger:after, label .hamburger:before { -webkit-transition: .5s ease-in-out; transition: .5s ease-in-out; content: ""; position: absolute; display: block; width: 100%; height: 100%; background: #000; } label .hamburger:before { top: -10px; } label .hamburger:after { bottom: -10px; } label input { display: none; } label input:checked + .menu { box-shadow: 0 0 0 100vw #FFF, 0 0 0 100vh #FFF; border-radius: 0; } label input:checked + .menu .hamburger { -webkit-transform: rotate(45deg); transform: rotate(45deg); } label input:checked + .menu .hamburger:after { -webkit-transform: rotate(90deg); transform: rotate(90deg); bottom: 0; } label input:checked + .menu .hamburger:before { -webkit-transform: rotate(90deg); transform: rotate(90deg); top: 0; } label input:checked + .menu + ul { opacity: 1; }
Style the fullscreen nav menu.
label .menu { position: absolute; right: -100px; top: -100px; z-index: 100; width: 200px; height: 200px; background: #FFF; border-radius: 50% 50% 50% 50%; -webkit-transition: .5s ease-in-out; transition: .5s ease-in-out; box-shadow: 0 0 0 0 #FFF, 0 0 0 0 #FFF; cursor: pointer; } label ul { z-index: 200; position: absolute; top: 50%; left: 50%; -webkit-transform: translate(-50%, -50%); transform: translate(-50%, -50%); opacity: 0; -webkit-transition: .25s 0s ease-in-out; transition: .25s 0s ease-in-out; } label a { margin-bottom: 1em; display: block; color: #000; text-decoration: none; }
It seems it doesn’t work correct on mobile: problems with overflow
menu appears while clicking on center of the page
any idea how do disable body scroll when the menu appears?