Mimicking Bootstrap Documentation Sidebar
<div id="side-nav" class="col-sm-2 hidden-xs hidden-sm hidden-print affix">
<ul class="nav">
<li><a href="#info">Info</a></li>
<li><a href="#properties">Company Properties</a></li>
<li><a href="#genome">Buyers/Suppliers</a></li>
<li><a href="#blog">Recent Blog</a></li>
<li><a href="#tests">Total Tests</a></li>
<li><a href="#company-bio">Company Bio</a></li>
</ul>
</div>
<div id="company-content" class="col-xs-12 col-sm-12 col-md-10">
<a name="info" id="info"></a>
<h4>Info</h4>
...
<a name="properties" id="properties"></a>
<h4>Company Properties</h4>
...
etc.
</div>
Now that we have a simple navigation let's style it to have sub menus not be shown until the item is in view of the user, just like Bootstrap.
<div id="side-nav" class="col-sm-2 hidden-xs hidden-sm hidden-print affix">
<ul class="nav">
<li><a href="#info">Info</a></li>
<li>
<a href="#properties">Company Properties</a>
<ul class="nav">
<li><a href="#properties-kudos">Kudos</a></li>
<li><a href="#properties-awards">Awards</a></li>
<li><a href="#properties-buildings">Buildings</a></li>
</ul>
</li>
<li><a href="#genome">Buyers/Suppliers</a></li>
<li><a href="#blog">Recent Blog</a></li>
<li><a href="#tests">Total Tests</a></li>
<li><a href="#company-bio">Company Bio</a></li>
</ul>
</div>
<div id="company-content" class="col-xs-12 col-sm-12 col-md-10">
<a name="info" id="info"></a>
<h4>Info</h4>
...
<a name="properties" id="properties"></a>
<h4>Company Properties</h4>
...
etc.
</div>
We've added some sub menu items to a few of the nav elements. At this point if you were to render the page it would show all of the items in the list regardless of it being a sub menu or not. We want to change that so we only see specific sub menus when they are active. To do this we just need to add a little bit of CSS that will trigger the display of the sub menus. When the menu item is not active the sub menus are hidden. When the menu item is activated it displays the sub menus below.
<style>
#side-nav .nav>.active>a, #side-nav .nav>.active:hover>a, #side-nav .nav>.active:focus>a {
padding-left: 18px;
font-weight: 700;
color: #563d7c;
background-color: transparent;
border-left: 2px solid #563d7c;
}
#side-nav .nav .nav>.active>a, #side-nav .nav .nav>.active:hover>a, #side-nav .nav .nav>.active:focus>a {
font-weight: 500;
padding-left: 28px;
}
#side-nav .nav>li>a {
display: block;
font-size: 13px;
font-weight: 400;
color: #999;
padding: 4px 20px;
}
#side-nav .nav .nav {
display: none;
padding-bottom: 10px;
}
#side-nav .nav>.active>.nav {
display: block;
padding-bottom: 10px;
}
</style>
<div id="side-nav" class="col-sm-2 hidden-xs hidden-sm hidden-print affix">
<ul class="nav">
<li><a href="#info">Info</a></li>
<li>
<a href="#properties">Company Properties</a>
<ul class="nav">
<li><a href="#properties-kudos">Kudos</a></li>
<li><a href="#properties-awards">Awards</a></li>
<li><a href="#properties-buildings">Buildings</a></li>
</ul>
</li>
<li><a href="#genome">Buyers/Suppliers</a></li>
<li><a href="#blog">Recent Blog</a></li>
<li><a href="#tests">Total Tests</a></li>
<li><a href="#company-bio">Company Bio</a></li>
</ul>
</div>
<div id="company-content" class="col-xs-12 col-sm-12 col-md-10">
<a name="info" id="info"></a>
<h4>Info</h4>
...
<a name="properties" id="properties"></a>
<h4>Company Properties</h4>
...
etc.
</div>
That's all there is to it! No tricky JavaScript required, it's all CSS. Now just adjust the padding, change the color, and add sub menus to your heart's content. You now have a side nav that looks and acts just like Bootstrap's does in their docs.
Comments
Join the discussionNo comments yet. Be the first to comment.




