Side Navigation Bar Implementation Using Html and Css

Side Navigation Bar Implementation Using HTML and CSS
Woman in black shirt sitting beside computer monitor

Photo by Surface on Unsplash

Side Navigation Bar Implementation Using HTML and CSS

Create a modern, responsive side navigation bar using pure HTML and CSS, with a toggle button to show or hide the sidebar. This implementation focuses on clean design, smooth transitions, and maintainable code structure, followed by a bonus centering elements example.

Prerequisites

  • Basic HTML and CSS knowledge
  • Basic jQuery knowledge for toggle functionality
  • A code editor (e.g., VS Code)

Part 1: Side Navigation Bar with Toggle

Step 1: HTML Structure (index.html)

Create a semantic HTML structure for the sidebar and toggle button.

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Side Navigation Bar</title>
    <link rel="stylesheet" href="styles.css">
    <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
    <script src="script.js"></script>
</head>
<body>
    <button class="sidebar-toggle-btn" aria-expanded="false" aria-controls="sidebarNav">Open Menu</button>
    <nav class="sidebar-navigation" id="sidebarNav">
        <div class="sidebar-logo">Your Logo</div>
        <ul class="sidebar-menu">
            <li class="sidebar-item">
                <a href="#" class="sidebar-link active">Dashboard</a>
            </li>
            <li class="sidebar-item">
                <a href="#" class="sidebar-link">Profile</a>
            </li>
            <li class="sidebar-item">
                <a href="#" class="sidebar-link">Messages</a>
            </li>
        </ul>
    </nav>
</body>
</html>

Step 2: Core CSS Implementation (styles.css)

Style the sidebar with smooth transitions and a hidden initial state.

.sidebar-navigation {
    width: 250px;
    height: 100vh;
    background: #2c3e50;
    position: fixed;
    left: 0;
    top: 0;
    transition: transform 0.3s ease;
    transform: translateX(-100%);
}

.sidebar-navigation.is-open {
    transform: translateX(0);
}

.sidebar-logo {
    color: white;
    text-align: center;
    padding: 20px;
    font-size: 1.5rem;
    margin-bottom: 30px;
}

.sidebar-menu {
    list-style: none;
    padding: 0;
}

.sidebar-link {
    display: block;
    color: #bdc3c7;
    padding: 15px 25px;
    text-decoration: none;
    transition: 0.3s;
}

.sidebar-link:hover {
    background: #34495e;
    color: #ecf0f1;
    padding-left: 30px;
}

.sidebar-link.active {
    color: #3498db;
    border-left: 4px solid #3498db;
    background: #34495e;
}

Step 3: Toggle Button jQuery (script.js)

Use jQuery to toggle the sidebar with accessibility features.

$(document).ready(function(){
    "use strict";
    
    const $toggleBtn = $(".sidebar-toggle-btn");
    const $sidebar = $(".sidebar-navigation");
    
    $toggleBtn.on("click", function(){
        const willShow = !$sidebar.hasClass("is-open");
        $sidebar.toggleClass("is-open", willShow);
        $toggleBtn.attr("aria-expanded", willShow);
        $toggleBtn.text(willShow ? "Close Menu" : "Open Menu");
    });
});

Explanation

  • Sidebar Toggle: Uses transform: translateX for smooth sliding animation.
  • jQuery: Toggles the .is-open class and updates ARIA attributes.
  • Accessibility: aria-expanded and aria-controls ensure screen reader compatibility.
UX Tip: Ensure the toggle button is easily accessible and clearly indicates the sidebar's state (e.g., "Open Menu" vs "Close Menu").

Accessibility Features

  • Use semantic nav element for the sidebar
  • Ensure proper contrast ratios (4.5:1 minimum)
  • Support keyboard navigation with focus states
  • Implement ARIA roles for toggle functionality

Golden Rules

  • Use CSS variables for easy theme changes
  • Implement focus states for keyboard navigation
  • Maintain consistent spacing hierarchy
  • Optimize for touch targets on mobile

Conclusion

A professional side navigation bar should maintain visual hierarchy, provide clear interactive states, remain responsive, and follow accessibility guidelines. The bonus centering example demonstrates modern CSS layout techniques. Experiment with transitions and colors to match your design, and test for usability across devices. Feel free to leave comments with any questions or suggestions!

Comments