Skip to content

Instantly share code, notes, and snippets.

@Yelakelly
Created April 18, 2017 20:05
Show Gist options
  • Save Yelakelly/77d3e70593977d09f65680531684b0ac to your computer and use it in GitHub Desktop.
Save Yelakelly/77d3e70593977d09f65680531684b0ac to your computer and use it in GitHub Desktop.
Adaptive navigation
<div class="primary-nav-button">
<button class="hamburger hamburger--collapse js-nav-toggle" type="button">
<span class="hamburger-box">
<span class="hamburger-inner"></span>
</span>
</button>
</div>
<nav class="primary-nav primary-nav--header">
<ul class="primary-nav__list">
<li class="primary-nav__item"><a class="primary-nav__link empty-link js-nav-link" href="#types-of-cufflinks">Типы запонок</a></li>
<li class="primary-nav__item"><a class="primary-nav__link empty-link js-nav-link" href="#types-of-work">Примеры работ</a></li>
<li class="primary-nav__item"><a class="primary-nav__link empty-link js-nav-link" href="#order-process">Процесс заказа</a></li>
<li class="primary-nav__item"><a class="primary-nav__link empty-link js-nav-link" href="#contacts">Контакты</a></li>
</ul>
</nav>
.primary-nav__list {
padding: 0px;
margin: 0px;
list-style-type: none;
zoom: 1;
}
.primary-nav__list:after,
.primary-nav__list:before {
content: "";
display: table;
}
.primary-nav__list:after {
clear: both;
}
.primary-nav__item {
float: left;
}
.primary-nav__item:not(:first-child) {
padding-left: 18px;
}
.primary-nav__link {
color: #fff;
text-decoration: none;
}
.primary-nav-button{
display: none;
}
/*start hamburger button*/
.hamburger{
padding: 15px 15px;
display: inline-block;
cursor: pointer;
transition-property: opacity, -webkit-filter;
transition-property: opacity, filter;
transition-property: opacity, filter, -webkit-filter;
transition-duration: 0.15s;
transition-timing-function: linear;
font: inherit;
color: inherit;
text-transform: none;
background-color: transparent;
border: 0;
margin: 0;
overflow: visible;
}
.hamburger:hover{
opacity: 0.7;
}
.hamburger:focus{
outline:0;
}
.hamburger-box{
width: 40px;
height: 24px;
display: inline-block;
position: relative;
}
.hamburger-inner{
display: block;
top: 50%;
margin-top: -2px;
}
.hamburger-inner, .hamburger-inner::before, .hamburger-inner::after{
width: 40px;
height: 3px;
background-color: #fff;
border-radius: 0;
position: absolute;
transition-property: -webkit-transform;
transition-property: transform;
transition-property: transform, -webkit-transform;
transition-duration: 0.15s;
transition-timing-function: ease;
}
.hamburger-inner::before, .hamburger-inner::after{
content: "";
display: block;
}
.hamburger-inner::before{
top: -10px;
}
.hamburger-inner::after{
bottom: -10px;
}
/*Collapse - effect*/
.hamburger--collapse .hamburger-inner{
top: auto;
bottom: 0;
transition-duration: 0.15s;
transition-delay: 0.15s;
transition-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);
}
.hamburger--collapse .hamburger-inner::after{
top: -20px;
transition: top 0.3s 0.3s cubic-bezier(0.33333, 0.66667, 0.66667, 1), opacity 0.1s linear;
}
.hamburger--collapse .hamburger-inner::before{
transition: top 0.12s 0.3s cubic-bezier(0.33333, 0.66667, 0.66667, 1), -webkit-transform 0.15s cubic-bezier(0.55, 0.055, 0.675, 0.19);
transition: top 0.12s 0.3s cubic-bezier(0.33333, 0.66667, 0.66667, 1), transform 0.15s cubic-bezier(0.55, 0.055, 0.675, 0.19);
transition: top 0.12s 0.3s cubic-bezier(0.33333, 0.66667, 0.66667, 1), transform 0.15s cubic-bezier(0.55, 0.055, 0.675, 0.19), -webkit-transform 0.15s cubic-bezier(0.55, 0.055, 0.675, 0.19);
}
.hamburger--collapse.is-active .hamburger-inner{
-webkit-transform: translate3d(0, -10px, 0) rotate(-45deg);
transform: translate3d(0, -10px, 0) rotate(-45deg);
transition-delay: 0.32s;
transition-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);
}
.hamburger--collapse.is-active .hamburger-inner::after{
top: 0;
opacity: 0;
transition: top 0.3s cubic-bezier(0.33333, 0, 0.66667, 0.33333), opacity 0.1s 0.27s linear;
}
.hamburger--collapse.is-active .hamburger-inner::before{
top: 0;
-webkit-transform: rotate(-90deg);
transform: rotate(-90deg);
transition: top 0.12s 0.18s cubic-bezier(0.33333, 0, 0.66667, 0.33333), -webkit-transform 0.15s 0.42s cubic-bezier(0.215, 0.61, 0.355, 1);
transition: top 0.12s 0.18s cubic-bezier(0.33333, 0, 0.66667, 0.33333), transform 0.15s 0.42s cubic-bezier(0.215, 0.61, 0.355, 1);
transition: top 0.12s 0.18s cubic-bezier(0.33333, 0, 0.66667, 0.33333), transform 0.15s 0.42s cubic-bezier(0.215, 0.61, 0.355, 1), -webkit-transform 0.15s 0.42s cubic-bezier(0.215, 0.61, 0.355, 1);
}
/*end hamburger button */
function menuToggle(menu, button){
button.toggleClass('is-active');
menu.slideToggle(300);
}
$('.js-nav-toggle').on('click', function(){
menuToggle($('.primary-nav'), $(this));
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment