Author: | tomkallen |
---|---|
Views Total: | 3,202 views |
Official Page: | Go to website |
Last Update: | June 30, 2016 |
License: | MIT |
Preview:

Description:
Just another pure CSS side menu where you can expand sub menu items on mouse hover.
How to use it:
Create a hidden checkbox to control the menu position. When it is checked the menu slides in.
<input type="checkbox" id="menu-button">
Create a label linked to the hidden checkbox.
<label for="menu-button" class="menu-button--label">▤</label>
Create a side menu with the following html structure.
<div class="menu-wrap"> <div class="side-menu"> <ul class="side-menu--list"> <li> <a class="subset">Company</a> <a href="">Mission</a> <a href="">People</a> <a href="">Social Responsibility</a> </li> <li> <a class="subset" href="">Products</a> <a href="">Solar panels</a> <a href="">Electronics</a> <a href="">Utilizers</a> </li> <li> <a class="subset" href="">Contacts</a> <a href="">Staff</a> <a href="">Contact</a> <a href="">Media</a> </li> </ul> </div> </div>
The core CSS / CSS3 rules for the expanding side menu.
/*We are fixing a menu and pulling them out of the screen by negative 'left'*/ .side-menu { padding: 0; margin: 0; font-size: 0; position: fixed; left: -120px; top: 100px; opacity: .95; overflow: hidden; -webkit-transition: all .3s ease-in-out; transition: all .3s ease-in-out; } /*We need to hide the default input box*/ #menu-button { display: none; } /*if checkbox is checked next sibling's .side menu child slides in*/ #menu-button:checked + .menu-wrap .side-menu { left: 0px; } /*this is the label for the checkbox which act as a button for our menu*/ .menu-button--label { color: black; position: fixed; top: 50px; left: 10px; font-size: 3rem; text-align: center; line-height: 0; cursor: pointer; -webkit-transition: all 1s; transition: all 1s; } /*Fancy rotation effect for our menu button. It rotates back when mouse leaves it */ .menu-button--label:hover { -webkit-transform: rotateY(180deg); transform: rotateY(180deg); -webkit-transition: all 1s; transition: all 1s; } /*We are giving the li item a shorter width to activate 'pop-out' effect when you hover*/ .side-menu--list li { font-size: 0; width: 110px; } .side-menu--list a { color: #fff; display: block; text-decoration: none; height: 2rem; line-height: 2rem; background: #333; padding-left: 1rem; width: 180px; font-size: 1.2rem; } .side-menu--list { list-style: none; padding-left: 0; } /*.subset is a sub-menu that we are styling to stand out a bit*/ .side-menu--list li a.subset { font-size: 1.4rem; height: 2.2rem; line-height: 2.2rem; padding-left: .5rem; background: #222; } /*Applying overflow:hidden to get rid of the cluttering when the height is minimized*/ .side-menu--list li { height: 2.2rem; overflow: hidden; -webkit-transition: all .4s ease-in-out; transition: all .4s ease-in-out; } /*when you hover a li it expands to show all the menu links(and expands itself only)*/ .side-menu--list li:hover { height: 8.2rem; -webkit-transition: all .4s ease-in-out; transition: all .4s ease-in-out; cursor: pointer; width: 180px; } /*We are skipping a sub-menu link and applying transformation to the follow-ups*/ .side-menu--list li a:not(:first-child):hover { cursor: pointer; background-color: #fff; color: #333; -webkit-transition: all .3s ease-in-out; transition: all .3s ease-in-out; -webkit-transform: translateX(10px); transform: translateX(10px); }