Sphinx RTD-Theme Dark Modeο
A comprehensive dark mode implementation for the Sphinx Read the Docs theme that provides an elegant dark interface while maintaining excellent readability and accessibility.
Featuresο
π Dark Mode Stylingο
Complete Dark Theme: Professional dark color scheme for all elements
High Contrast: Optimized text contrast for excellent readability
Eye-Friendly: Reduces eye strain during extended reading sessions
Consistent Design: Maintains RTD themeβs clean, professional appearance
π¨ Enhanced Visual Elementsο
Smooth Transitions: Animated hover effects and state changes
Custom Scrollbars: Dark-themed scrollbars that match the overall design
Improved Navigation: Enhanced sidebar and navigation styling
Code Block Optimization: Dark syntax highlighting for better code readability
π§ Responsive Designο
Mobile Friendly: Optimized for all screen sizes
Print Compatibility: Maintains readability when printed
Accessibility: WCAG compliant color contrasts
Cross-Browser: Works across all modern browsers
Installationο
Requirementsο
Sphinx documentation generator
Read the Docs theme (
sphinx_rtd_theme)Basic CSS customization support
Setupο
Copy the CSS file
custom.cssto your Sphinx project:Create file
custom.cssusing editor and paste the css code from here: Dark Mode CSS filesource/_static/css/custom.css
Update your
conf.pyto include the CSS:# Ensure static path is configured html_static_path = ['_static'] # Add your custom CSS html_css_files = [ 'css/custom.css', # ... your other CSS files ]
Build your documentation:
make htmlClear browser cache (important for seeing changes):
Hard refresh:
Ctrl+F5(Windows/Linux) orCmd+Shift+R(Mac)Clear cache: Use browser developer tools to clear site data
Incognito/Private mode: Test in a fresh browser session
CSS File Structureο
The dark mode CSS is organized into logical sections:
custom.css
βββ Color Variables # Global color definitions
βββ Body & Background # Main page styling
βββ Navigation & Sidebar # Left sidebar styling
βββ Content Area # Main content styling
βββ Code Blocks # Syntax highlighting
βββ Tables & Lists # Data presentation
βββ Search & Forms # Interactive elements
βββ Responsive Design # Mobile adaptations
βββ Print Styles # Print-friendly overrides
Color Schemeο
Primary Colorsο
Element |
Light Mode |
Dark Mode |
Usage |
|---|---|---|---|
Background |
|
|
Main page background |
Text |
|
|
Primary text content |
Sidebar |
|
|
Navigation background |
Code Blocks |
|
|
Code background |
Links |
|
|
Hyperlinks |
Borders |
|
|
Dividers and borders |
Accent Colorsο
Success:
#27ae60β#2ecc71(Green)Warning:
#f39c12β#f1c40f(Orange/Yellow)Error:
#e74c3cβ#e67e22(Red/Orange)Info:
#3498dbβ#74b9ff(Blue)
Customizationο
Adjusting Colorsο
To modify the color scheme, edit the CSS variables at the top of the file:
:root {
--bg-color: #1e1e1e; /* Main background */
--text-color: #e0e0e0; /* Primary text */
--sidebar-bg: #2d2d2d; /* Sidebar background */
--accent-color: #4da6e0; /* Links and accents */
--border-color: #404040; /* Borders and dividers */
}
Theme Variantsο
Create different dark mode variants by adjusting the color variables:
Midnight Blue Themeο
--bg-color: #0f1419;
--sidebar-bg: #1a1f2e;
--accent-color: #39d7ff;
Warm Dark Themeο
--bg-color: #1a1611;
--sidebar-bg: #2a251f;
--accent-color: #ff9500;
Typography Adjustmentsο
Modify font settings for better readability:
body {
font-family: 'Source Sans Pro', sans-serif;
font-size: 16px;
line-height: 1.6;
}
.rst-content h1, .rst-content h2, .rst-content h3 {
font-weight: 600;
color: var(--text-color);
}
Browser Supportο
Chrome/Chromium: Full support
Firefox: Full support
Safari: Full support
Edge: Full support
Mobile Browsers: Responsive design supported
Accessibilityο
WCAG Complianceο
AA Color Contrast: All text meets WCAG AA standards
Focus Indicators: Clear keyboard navigation
Screen Reader: Compatible with assistive technologies
High Contrast: Optional high contrast mode available
Color Blind Friendlyο
The color scheme is designed to be accessible for users with:
Protanopia (red-blind)
Deuteranopia (green-blind)
Tritanopia (blue-blind)
Developmentο
Building and Testingο
Make changes to
source/_static/css/custom.cssRebuild documentation:
make clean make html
Clear browser cache (critical step):
Hard refresh:
Ctrl+F5(Windows/Linux) orCmd+Shift+R(Mac)Force reload:
Ctrl+Shift+Rin most browsersDeveloper tools: F12 β Network tab β βDisable cacheβ checkbox
Incognito mode: Test in private browsing to bypass cache entirely
Test across devices and browsers
Validate accessibility using browser dev tools
Important: CSS changes often require a hard refresh or cache clear to be visible. If you donβt see your changes immediately, try a hard refresh before assuming the CSS isnβt working.
CSS Organizationο
The CSS follows these principles:
Mobile-first: Base styles for mobile, enhanced for desktop
Progressive Enhancement: Graceful degradation for older browsers
Maintainable: Clear organization and commenting
Performance: Optimized selectors and minimal redundancy
Debuggingο
Use browser developer tools to:
Inspect color contrast ratios
Test responsive breakpoints
Validate CSS performance
Check accessibility compliance
Integration with Search Enhancementο
This dark mode CSS works seamlessly with the Enhanced Sphinx Search:
/* Search result highlighting in dark mode */
.highlighted {
background-color: #3a3a00;
color: #ffff99;
padding: 2px 4px;
border-radius: 2px;
}
Performanceο
Optimization Featuresο
CSS Variables: Efficient color management
Minimal Overrides: Only necessary style changes
Compressed: Minified for production use
Cache-Friendly: Structured for optimal browser caching
Loading Speedο
Small File Size: ~15KB compressed
No External Dependencies: Self-contained CSS
Efficient Selectors: Optimized for browser performance
Troubleshootingο
Common Issuesο
Q: Dark mode not applying
A: Ensure custom.css is in the correct path and listed in html_css_files
Q: CSS changes not visible
A: Hard refresh your browser (Ctrl+F5 or Cmd+Shift+R) or clear browser cache. This is the most common issue when developing CSS.
Q: Navigation hover effects not working A: Try a hard refresh first. If still not working, check browser developer tools to see if CSS is loading properly.
Q: Some elements still show light colors A: Check for theme-specific CSS that may override the dark styles
Q: Text is hard to read A: Adjust contrast ratios in the color variables section
Q: Mobile layout issues A: Verify responsive breakpoints are working correctly
Browser-Specific Fixesο
/* Firefox scrollbar styling */
@-moz-document url-prefix() {
.wy-side-scroll {
scrollbar-width: thin;
scrollbar-color: #666 #2d2d2d;
}
}
/* Safari-specific adjustments */
@supports (-webkit-appearance: none) {
.wy-nav-content {
-webkit-font-smoothing: antialiased;
}
}
Contributingο
When contributing improvements:
Test thoroughly across browsers and devices
Maintain accessibility standards
Document changes in CSS comments
Follow naming conventions for consistency
Validate CSS using standard tools
Licenseο
This CSS customization maintains the same license as your documentation project.
Changelogο
v1.0.0ο
Initial dark mode implementation
Complete RTD theme coverage
Responsive design optimization
Accessibility compliance
Search integration support
Future Enhancementsο
[ ] Auto dark/light mode detection
[ ] Theme switcher widget
[ ] Additional color scheme variants
[ ] Enhanced print styles
[ ] Animation preferences support
This dark mode CSS was developed to provide a professional, accessible, and visually appealing dark theme for Sphinx documentation while maintaining the excellent usability of the Read the Docs theme.