Best For
fixed sidebar layout / sidebar navigation / admin dashboard layout
固定侧边栏布局
Application layout with a fixed sidebar navigation and scrollable main content area. Ideal for admin dashboards, documentation sites, dashboards, and SaaS applications.
Best For
fixed sidebar layout / sidebar navigation / admin dashboard layout
Primary Move
Sidebar uses fixed or sticky positioning
Watch Out
Do not make sidebar too wide affecting main content area
AI Implementation
Use the Hard Prompt by default to generate UI. Use the Design Spec to understand, modify, and review the style. Use the Creative Brief for early exploration.
Use this by default: copy it, append the concrete requirement, and let AI generate consistent production UI.
When to use
How to use
STYLEKIT_STYLE_REFERENCE
style_name: Fixed Sidebar
style_slug: sidebar-fixed
style_source: /styles/sidebar-fixed
# Hard Prompt
## When To Use
Use this when you want AI to generate code with strict style consistency. It is the safest default for production UI.
## How To Use
- Copy the full prompt into ChatGPT, Claude, Cursor, or another coding assistant.
- Append the concrete product/page requirement after the prompt.
- After generation, check the forbidden rules and interaction states before accepting the output.
Strictly follow the style rules below and maintain consistency. No style drift allowed.
## Requirements
- Prioritize style consistency first, then creative extension.
- When conflicts arise, treat prohibitions as the highest priority.
- Self-check before output: verify colors, typography, spacing, and interactions still match this style.
## Style Rules
You are a frontend expert specializing in Fixed Sidebar layout. All generated code must strictly follow these constraints:
## Absolute Prohibitions
- Do NOT make sidebar too wide (max 280px)
- Do NOT keep sidebar expanded on mobile
- Do NOT forget current page indicator
- Do NOT create overly deep navigation
- Do NOT ignore sidebar overflow scroll
## Must Follow
- Sidebar: fixed top-0 left-0 w-64 h-screen
- Main content: ml-64 (matches sidebar width)
- Mobile: sidebar hidden, hamburger menu trigger
- Active state: highlight current page
- Overflow: sidebar nav scrollable if needed
## Structure
Sidebar (top to bottom):
1. Logo/Brand area
2. Search (optional)
3. Main navigation (scrollable)
4. Secondary nav or settings
5. User profile/account
Main content:
- Left margin matches sidebar width
- Own scrolling context
- Header area for page title
- Content area below
## Responsive
Desktop (1024px+):
- Full sidebar visible
- Main content with left margin
Tablet/Mobile (< 1024px):
- Sidebar as off-canvas drawer
- Hamburger menu button
- Overlay when sidebar open
- Main content full width
## Navigation
- Group related items
- Use icons + labels
- Highlight active item
- Support nested items (accordion)
- Tooltips when collapsed
## Animation & Interaction Rules
- Frictionless Utility: High-interaction areas uniformly use duration-150, avoiding flashy effects that interrupt efficiency.
- Magnetic Icon Shift: On hover, icons slightly shift right (translate-x-0.5), guiding the eye toward the main content area.
- Solid Active State: Current item maintains a stable anchor (left accent line or bold border), avoiding floating feel.
- Content Lift: Main area cards hover only allows -translate-y-0.5 and lightweight shadow, ensuring reading stability.
## Self-Check
After generating code, verify:
1. Sidebar is fixed position
2. Main content has correct margin
3. Mobile has hamburger menu
4. Current page is highlighted
5. Sidebar scrolls if content overflows
## Absolute Bans (Match and Refuse)
If any of the following patterns appear, it is a style violation — rewrite without exception.
- make sidebar too wide affecting main content area
- keep sidebar expanded on mobile
- ignore current page state indication
- create overly deep navigation levels
- let sidebar content overflow without scrolling
- use bouncy, spinning, or flashy animations for sidebar menus
- leave active items without a clear visual anchor
## Self-Check (Verify Before Shipping)
If any item fails, the style has drifted — fix before shipping.
- [ ] No purple-to-blue gradients
- [ ] No overused fonts (Inter, Roboto, Geist, Fraunces, Plus Jakarta Sans)
- [ ] No nested cards (cards inside cards)
- [ ] No gray text on colored backgrounds
- [ ] Body text contrast meets WCAG AA (>= 4.5:1)
- [ ] No bounce or elastic easing curves
- [ ] Animations have a prefers-reduced-motion fallback
- [ ] Body text line length capped at 65-75 characters
- [ ] No side-stripe accent borders (border-left/right > 1px)
- [ ] No gradient text (background-clip: text)
- [ ] No glassmorphism used as the default surface treatment
- [ ] No tiny uppercase tracked eyebrow labels above every section heading
- [ ] do not make sidebar too wide affecting main content area
- [ ] do not keep sidebar expanded on mobile
- [ ] do not ignore current page state indication
- [ ] do not create overly deep navigation levels
- [ ] do not let sidebar content overflow without scrollingComponent Templates
侧边栏中的操作按钮
Frontend Readiness
This layer tracks whether the style is ready for real websites: theme modes, state feedback, keyboard access, and performance constraints.
Overall
51%
Fallback
Dark Mode
0%
MissingUI States
79%
PartialMotion
70%
PartialA11y
70%
PartialPerformance
35%
FallbackButton
Default / Hover / Focus Visible / Active / Disabled
Input
Default / Hover / Focus Visible / Disabled / Error
Card
Default / Hover / Focus Visible / Loading / Skeleton
Form
Default / Focus Visible / Disabled / Loading / Error
FAQ
/* Fixed Sidebar Global Styles */
/* Sidebar base */
.sidebar {
position: fixed;
top: 0;
left: 0;
width: 16rem; /* 256px */
height: 100vh;
background: white;
border-right: 1px solid #e2e8f0;
display: flex;
flex-direction: column;
z-index: 40;
transition: transform 0.3s ease;
}
/* Main content offset */
.main-content {
margin-left: 16rem;
min-height: 100vh;
}
/* Mobile sidebar hidden by default */
@media (max-width: 1024px) {
.sidebar {
transform: translateX(-100%);
}
.sidebar.open {
transform: translateX(0);
}
.main-content {
margin-left: 0;
}
}
/* Sidebar overlay for mobile */
.sidebar-overlay {
position: fixed;
inset: 0;
background: rgba(0, 0, 0, 0.5);
z-index: 30;
opacity: 0;
visibility: hidden;
transition: opacity 0.3s, visibility 0.3s;
}
.sidebar-overlay.visible {
opacity: 1;
visibility: visible;
}
/* Collapsed sidebar variant */
.sidebar-collapsed {
width: 4rem; /* 64px */
}
.sidebar-collapsed .sidebar-label {
display: none;
}
.sidebar-collapsed + .main-content {
margin-left: 4rem;
}
/* Navigation item active state */
.nav-item {
display: flex;
align-items: center;
gap: 0.75rem;
padding: 0.75rem 1rem;
border-radius: 0.5rem;
color: #64748b;
transition: all 0.2s;
}
.nav-item:hover {
background: #f1f5f9;
color: #0f172a;
}
.nav-item.active {
background: #eff6ff;
color: #2563eb;
font-weight: 500;
}
/* Fixed Sidebar Design Tokens */
:root {
--sidebar-fixed-primary: #1e293b;
--sidebar-fixed-secondary: #f8fafc;
--sidebar-fixed-accent: #3b82f6;
--sidebar-fixed-glow: rgba(30, 41, 59, 0.3);
}
@keyframes sidebar-fixed-fade-in {
from { opacity: 0; transform: translateY(8px); }
to { opacity: 1; transform: translateY(0); }
}
@keyframes sidebar-fixed-pulse {
0%, 100% { opacity: 1; }
50% { opacity: 0.7; }
}
.sidebar-fixed-card {
position: relative;
overflow: hidden;
}
.sidebar-fixed-card::before {
content: "";
position: absolute;
inset: 0;
opacity: 0;
transition: opacity 0.3s ease;
background: linear-gradient(135deg, rgba(30, 41, 59, 0.05), transparent);
pointer-events: none;
}
.sidebar-fixed-card:hover::before {
opacity: 1;
}
.sidebar-fixed-gradient {
background: linear-gradient(135deg, #1e293b, #3b82f6);
}
.sidebar-fixed-gradient-text {
background: linear-gradient(135deg, #1e293b, #3b82f6);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
background-clip: text;
}
.sidebar-fixed-frosted {
backdrop-filter: blur(12px) saturate(180%);
-webkit-backdrop-filter: blur(12px) saturate(180%);
background: rgba(30, 41, 59, 0.08);
}
.sidebar-fixed-accent-corner {
clip-path: polygon(0 0, 100% 0, 100% calc(100% - 2rem), calc(100% - 2rem) 100%, 0 100%);
}
.sidebar-fixed-animate-in {
animation: sidebar-fixed-fade-in 0.5s ease-out both;
}Compatible Visual Styles
Fixed Sidebar is a layout pattern that can be paired with the following visual styles.
IDE Integration
Download configuration files for AI coding assistants to generate code in this style.
Style Pack
Get complete machine-readable style assets including design tokens, Tailwind presets, CSS variables, and shadcn/ui themes.
Metadata
Style metadata including version information
Design Tokens
Compatible with Figma / Style Dictionary / Tokens Studio
Tailwind Preset
Tailwind CSS theme preset, import directly in config
Global CSS
CSS variables and base styles
shadcn Theme
shadcn/ui theme configuration
CSS Variables
Pure CSS variables, works with any project
SKILL.md
Loadable skill pack for Cursor / Claude Code / VS Code
Fixed Sidebar is a classic layout for application-type interfaces, providing persistent visible navigation while maximizing content display space.
WCAG 2.1 compliance analysis based on color contrast and typography readability.
Overall Score
Grade: C - Fair
Contrast Ratios
| Context | Colors | Ratio | AA | AAA |
|---|---|---|---|---|
| Text on secondary background | /#18181b / #ffffff | 17.72:1 | ||
| Button primary | /#ffffff / #3b82f6 | 3.68:1 | ||
| Text on accent 1 | /#18181b / #3b82f6 | 4.82:1 | ||
| Text on accent 2 | /#18181b / #10b981 | 6.98:1 | ||
| Text on accent 3 | /#18181b / #f59e0b | 8.25:1 | ||
| Text on accent 4 | /#18181b / #ef4444 | 4.71:1 |
Readability
Score
58/100
Font Size
text-sm
Font Weight
font-semibold tracking-tight
Line Height
default
Scoring is based on WCAG 2.1 standards. AA requires 4.5:1 contrast for normal text, 3:1 for large text; AAA requires 7:1 for normal text, 4.5:1 for large text.
Design Recipes
These curated recipes combine this style with layouts and animations, optimized for specific use cases.