CSS Responsive Sidebar Navigation

Simple and convenient navigation bar. Ideal for the administration panel.

CSS Responsive Sidebar Navigation
CSS Responsive Sidebar Navigation


Structure

HTML structure consists of two main elements: <header>, with the logo of the website, the search box, the top navigation; and an element <main> to store the main content (div.content-wrapper) + lateral navigation (nav.cd-side-nav).

In our HTML structure elements .cd-search and .cd-top-nav are within the <header>, while you switch to the mobile version moved to block .cd-side-nav.


<header class="cd-main-header">
 <a href="#0" class="cd-logo"><img src="img/cd-logo.svg" alt="Logo"></a>

 <div class="cd-search">
  <form action="#0">
   <input type="search" placeholder="Search...">
  </form>
 </div> <!-- cd-search -->

 <a href="#0" class="cd-nav-trigger">Menu<span></span></a>

 <nav class="cd-nav">
  <ul class="cd-top-nav">
   <li><a href="#0">Tour</a></li>
   <li><a href="#0">Support</a></li>
   <li class="has-children account">
    <a href="#0">
     <img src="img/cd-avatar.png" alt="avatar">
     Account
    </a>

    <ul>
     <li><a href="#0">My Account</a></li>
     <!-- other list items here -->
    </ul>
   </li>
  </ul>
 </nav>
</header> <!-- .cd-main-header -->

<main class="cd-main-content">
 <nav class="cd-side-nav">
  <ul>
   <li class="cd-label">Main</li>
   <li class="has-children overview">
    <a href="#0">Overview</a>

    <ul>
     <li><a href="#0">All Data</a></li>
     <!-- other list items here -->
    </ul>
   </li>
   <li class="has-children notifications active">
    <a href="#0">Notifications<span class="count">3</span></a>

    <ul>
     <li><a href="#0">All Notifications</a></li>
     <!-- other list items here -->
    </ul>
   </li>

   <!-- other list items here -->
  </ul>

  <!-- other unordered lists here -->
 </nav>

 <div class="content-wrapper">
  <!-- main content here -->
 </div> <!-- .content-wrapper -->
</main> <!-- .cd-main-content -->

Styles

We'll create a style configuration for the three types of screens.

For small devices, the panel will occupy 100% of the width, position: absolute, hidden by default (visibility: hidden). Clicking / tapas for .cd-nav-trigger, change the display mode (using the class .nav-is-visible).

.cd-side-nav {
  position: absolute;
  left: 0;
  top: 0;
  width: 100%;
  visibility: hidden;
  opacity: 0;
  transition: opacity 0.2s 0s, visibility 0s 0.2s;
}
.cd-side-nav.nav-is-visible {
  opacity: 1;
  visibility: visible;
  transition: opacity 0.2s 0s, visibility 0s 0s;
}

For medium-sized screens (more than 768px) display the status of navigation minimized. Position: relative, fixed width (110px) and float: left, so she stuck to the left side of the element <main>.

@media only screen and (min-width: 768px) {
  .cd-side-nav {
    position: relative;
    float: left;
    width: 110px;
    /* reset style */
    visibility: visible;
    opacity: 1;
  }
}

@media only screen and (min-width: 768px) {
    .cd-main-content .content-wrapper {
        margin-left: 110px;
    }
}

For larger screens (more than 1170px) will show immediately fully disclosed version.

Working with events

The original structure elements .cd-search and .cd-top-nav are within the <header>.

For small screens (less than 1170px), move these items into .cd-side-nav.

var resizing = false;
moveNavigation();
$(window).on('resize', function(){
if( !resizing ) {
 window.requestAnimationFrame(moveNavigation);
 resizing = true;
}
});

function moveNavigation(){
var mq = checkMQ(); //this function returns mobile,tablet or desktop
if ( mq == 'mobile' && topNavigation.parents('.cd-side-nav').length == 0 ) { //topNavigation = $('.cd-top-nav')
detachElements();
topNavigation.appendTo(sidebar); //sidebar = $('.cd-side-nav')
searchForm.prependTo(sidebar);
} else if ( ( mq == 'tablet' || mq == 'desktop') && topNavigation.parents('.cd-side-nav').length > 0 ) {
detachElements();
searchForm.insertAfter(header.find('.cd-logo')); //header = $('.cd-main-header')
topNavigation.appendTo(header.find('.cd-nav'));
}
resizing = false;
}

function detachElements() {
topNavigation.detach();//topNavigation = $('.cd-top-nav')
searchForm.detach();//searchForm = $('.cd-search')
}

Besides all this we have integrated the plugin jQuery-menu-aim for a more comfortable working with navigation.



Source : https://codyhouse.co/gem/responsive-sidebar-navigation/

About the Author

Saya bagian dari CKD (pesakit buah pinggang kronik) selama 8 thn. siapa-siapa nak bantu saya untuk biaya Injection.boleh email saya. Click Profile

Post a Comment

Cookie Consent
We serve cookies on this site to analyze traffic, remember your preferences, and optimize your experience.
Oops!
It seems there is something wrong with your internet connection. Please connect to the internet and start browsing again.
AdBlock Detected!
We have detected that you are using adblocking plugin in your browser.
The revenue we earn by the advertisements is used to manage this website, we request you to whitelist our website in your adblocking plugin.
Site is Blocked
Sorry! This site is not available in your country.