Bootstrap Docs Sidebar

by Kyle Mitofsky

HTML

<script src="//netdna.bootstrapcdn.com/bootstrap/3.0.0/js/bootstrap.min.js"></script>
<link rel="stylesheet" href="http://getbootstrap.com/dist/css/bootstrap.css">
<div class="container">
    <div class="row">
        <!--Nav Bar -->
        <nav class="col-xs-4 bs-docs-sidebar">
            <ul id="sidebar" class="nav nav-stacked fixed col-xs-4">
                <li>
                    <a href="#GroupA">Group A</a>
                    <ul class="nav nav-stacked">
                        <li><a href="#GroupASub1">Sub-Group 1</a></li>
                        <li><a href="#GroupASub2">Sub-Group 2</a></li>
                        <li><a href="#GroupASub3">Sub-Group 3</a></li>
                        <li><a href="#GroupASub4">Sub-Group 4</a></li>
                        <li><a href="#GroupASub5">Sub-Group 5</a></li>
                        <li><a href="#GroupASub6">Sub-Group 6</a></li>
                        <li><a href="#GroupASub7">Sub-Group 7</a></li>
                        <li><a href="#GroupASub8">Sub-Group 8</a></li>
                    </ul>
                </li>
                <li>
                    <a href="#GroupB">Group B</a>
                    <ul class="nav nav-stacked">
                        <li><a href="#GroupBSub1">Sub-Group 1</a></li>
                        <li><a href="#GroupBSub2">Sub-Group 2</a></li>
                        <li><a href="#GroupBSub3">Sub-Group 3</a></li>
                        <li><a href="#GroupBSub4">Sub-Group 4</a></li>
                        <li><a href="#GroupBSub5">Sub-Group 5</a></li>
                        <li><a href="#GroupBSub6">Sub-Group 6</a></li>
                        <li><a href="#GroupBSub7">Sub-Group 7</a></li>
                        <li><a href="#GroupBSub8">Sub-Group 8</a></li>
                    </ul>
                </li>
                <li>
                    <a href="#GroupC">Group C</a>
                    <ul class="nav nav-stacked">
                        <li><a...

CSS

.group {
    background: yellow;
    width: 200px;
}
.group .subgroup {
    background: orange;
    width: 150px;
    height: 200px;
}
.fixed {
    position: fixed;
}

/* sidebar */
.bs-docs-sidebar {
    padding-left: 20px;
    padding-bottom: 20px;
}

/* all links */
.bs-docs-sidebar .nav>li>a {
    color: #999;
    border-left: 2px solid transparent;
    padding: 4px 20px;
    font-size: 13px;
    font-weight: 400;
}

/* nested links */
.bs-docs-sidebar .nav .nav>li>a {
    padding-top: 1px;
    padding-bottom: 1px;
    padding-left: 30px;
    font-size: 12px;
}

/* active & hover links */
.bs-docs-sidebar .nav>.active>a, 
.bs-docs-sidebar .nav>li>a:hover, 
.bs-docs-sidebar .nav>li>a:focus {
    color: #563d7c;                 
    text-decoration: none;          
    background-color: transparent;  
    border-left-color: #563d7c; 
}
/* all active links */
.bs-docs-sidebar .nav>.active>a, 
.bs-docs-sidebar .nav>.active:hover>a,
.bs-docs-sidebar .nav>.active:focus>a {
    font-weight: 700;
}
/* nested active links */
.bs-docs-sidebar .nav .nav>.active>a, 
.bs-docs-sidebar .nav .nav>.active:hover>a,
.bs-docs-sidebar .nav .nav>.active:focus>a {
    font-weight: 500;
}

/* hide inactive nested list */
.bs-docs-sidebar .nav ul.nav {
    display: none;           
}
/* show active nested list */
.bs-docs-sidebar .nav>.active>ul.nav {
    display: block;           
}

/* make sidebar srollable */
.bs-docs-sidebar > ul {
    overflow-y: auto;
    height: 100%;
    padding-top: 20px;
}

JavaScript

$('body').scrollspy({
    target: '.bs-docs-sidebar',
    offset: 40
});