CSS Development Guidelines
Core Principles
- •Write semantic HTML to improve accessibility and SEO
- •Use CSS for styling, avoiding inline styles
- •Ensure responsive design using media queries and flexible layouts
- •Prioritize external stylesheets over inline or embedded styles
Layout Techniques
Flexbox
- •Use Flexbox for one-dimensional layouts (rows or columns)
- •Leverage
justify-contentandalign-itemsfor alignment - •Use
flex-wrapfor responsive wrapping behavior - •Prefer
gapproperty over margins for consistent spacing
Grid
- •Use CSS Grid for two-dimensional layouts
- •Define grid templates with
grid-template-columnsandgrid-template-rows - •Use
grid-areafor named template areas - •Leverage
auto-fitandauto-fillfor responsive grids
Units and Typography
- •Use
remunits for typography to respect user preferences - •Use
emunits for component-relative sizing - •Avoid
pxfor font sizes; reserve for borders and fixed elements - •Implement fluid typography with
clamp()when appropriate - •Use viewport units (
vw,vh) thoughtfully for full-screen layouts
CSS Variables (Custom Properties)
- •Define design tokens as CSS variables on
:root - •Use variables for colors, spacing, typography, and shadows
- •Implement theming by overriding variables in different contexts
- •Name variables semantically (e.g.,
--color-primary,--spacing-md)
Naming Conventions
BEM Methodology
- •Block: Standalone component (e.g.,
.card) - •Element: Part of a block (e.g.,
.card__title) - •Modifier: Variation of block or element (e.g.,
.card--featured)
Best Practices
- •Use lowercase with hyphens for class names
- •Avoid IDs for styling; reserve for JavaScript hooks
- •Keep specificity low by using single class selectors
- •Scope styles to components to prevent conflicts
Specificity Management
- •Maintain specificity at 0-1-0 (single class) when possible
- •Avoid
!importantdeclarations - •Use cascading intentionally, not accidentally
- •Consider CSS Layers (
@layer) for specificity control
Responsive Design
- •Implement mobile-first media queries
- •Use relative units for flexible layouts
- •Test across multiple viewport sizes
- •Consider container queries for component-level responsiveness
Performance
- •Minimize selector complexity
- •Avoid deeply nested selectors
- •Use efficient selectors (class over element)
- •Leverage CSS containment for isolated components
- •Consider critical CSS for above-the-fold content
Modern CSS Features
- •Use
aspect-ratiofor maintaining proportions - •Leverage
gapin Flexbox and Grid - •Use logical properties (
margin-inline,padding-block) - •Implement smooth transitions with
transitionproperty - •Use
@supportsfor feature detection
Organization
- •Structure stylesheets logically (base, layout, components, utilities)
- •Keep files modular and focused
- •Document complex styles with comments
- •Use a consistent property order within declarations
Browser Compatibility
- •Use vendor prefixes when necessary (consider Autoprefixer)
- •Test across target browsers
- •Provide fallbacks for newer features
- •Use progressive enhancement approach
Accessibility
- •Ensure sufficient color contrast (WCAG AA minimum)
- •Provide visible focus styles for keyboard navigation
- •Avoid hiding content in ways that affect screen readers
- •Use
prefers-reduced-motionmedia query for animations