CSS Development Standards
Use these standards when writing CSS. This guide covers both Blazor and React projects.
Style Organization Priority
- •Global stylesheets - Use existing styles first
- •Component isolation - Component-specific styles in isolated files
- •Inline styles - Only for dynamic or highly specific styling
Framework-Specific Patterns
Blazor Projects
Global Stylesheets: app.css, edit-controls.css, ant-overrides.css
Component Isolation: Use .razor.css files (automatic CSS isolation)
code
MyComponent.razor MyComponent.razor.css <- Scoped styles
Example:
css
/* MyComponent.razor.css - automatically scoped to component */
.container { padding: 16px; }
button { background: var(--primary-color); }
React Projects
Global Stylesheets: index.css, App.css, or framework-specific (e.g., globals.css in Next.js)
Component Isolation Options:
- •CSS Modules (Recommended) - Use
.module.cssfiles
code
MyComponent.tsx MyComponent.module.css <- Scoped styles
css
/* MyComponent.module.css */
.container { padding: 16px; }
.button { background: var(--primary-color); }
tsx
// MyComponent.tsx
import styles from './MyComponent.module.css';
export const MyComponent = () => (
<div className={styles.container}>
<button className={styles.button}>Click</button>
</div>
);
- •Styled Components - CSS-in-JS approach
tsx
import styled from 'styled-components'; const Container = styled.div` padding: 16px; `;
- •Tailwind CSS - Utility-first approach
tsx
<div className="p-4 flex flex-col gap-4">
Standard Patterns (Both Frameworks)
css
/* Utility classes (preferred) - Spacing scale: 4px, 8px, 16px, 24px, 32px */
.flex-column-16 { display: flex; flex-direction: column; gap: 16px; }
.flex-row-16 { display: flex; flex-direction: row; gap: 16px; }
.card { padding: 16px; border: 1px solid var(--border-color); border-radius: 4px; }
CSS Best Practices Checklist
General (All Frameworks)
- •✅ Reuse existing styles - Check global stylesheets first
- •✅ Semantic class names - Descriptive, not presentation-focused
- •✅ Consistent spacing - Use 8px increment system (4, 8, 16, 24, 32px)
- •✅ CSS custom properties - Leverage variables for theming
- •✅ Shorthand properties -
margin: 16px 0vs separate properties - •✅ Remove unused styles - Delete unused classes; move shared classes to global files
- •❌ Redundant styles - Don't duplicate existing utility classes
- •❌ Inline styles - Use only when absolutely necessary
- •❌ !important - Avoid unless overriding third-party styles
Blazor-Specific
- •✅ Component isolation - Use
.razor.cssfor component-specific styles - •✅ Check existing - Look in
app.css,edit-controls.css,ant-overrides.cssfirst
React-Specific
- •✅ CSS Modules preferred - Use
.module.cssfor component isolation - •✅ Import styles - Import CSS Modules as objects:
import styles from './X.module.css' - •✅ camelCase in modules - Use
styles.myClassnotstyles['my-class']when possible - •✅ Compose for reuse - Use CSS Modules
composesfor extending styles - •❌ Global class collisions - Avoid plain
.cssimports in components (use modules instead)
Quick Reference: Isolation Files
| Framework | Isolation Method | File Extension |
|---|---|---|
| Blazor | CSS Isolation | .razor.css |
| React | CSS Modules | .module.css |
| React | Styled Components | N/A (JS/TS file) |
| React | Tailwind | N/A (utility classes) |