Calendar/wwwroot/css/README.md

152 lines
3.3 KiB
Markdown
Raw Normal View History

2025-11-03 14:54:57 +01:00
# CSS Build Process
Dette projekt bruger PostCSS til at kompilere moderne nested CSS til browser-kompatibel CSS.
## Mappestruktur
```
wwwroot/css/
├── src/ # Source CSS filer med nesting
│ ├── calendar-base-css.css
│ ├── calendar-layout-css.css
│ └── ...
├── calendar-base-css.css # Compiled CSS (genereret automatisk)
├── calendar-layout-css.css # Compiled CSS (genereret automatisk)
└── ...
```
## Workflow
### Development
1. **Rediger CSS i `src/` mappen**
- Brug moderne CSS nesting
- Skriv nested selectors med `&`
- Brug CSS custom properties
2. **Build CSS**
```bash
npm run css:build
```
3. **Watch mode (auto-rebuild)**
```bash
npm run css:watch
```
### Production
```bash
npm run css:build:prod
```
Dette vil:
- Kompilere nested CSS
- Tilføje vendor prefixes (autoprefixer)
- Minificere CSS (cssnano)
- Fjerne comments
## CSS Nesting Eksempel
### Source (src/calendar-layout-css.css)
```css
swp-allday-container {
display: grid;
swp-allday-event {
height: 22px;
padding: 2px 4px;
&[data-type="meeting"] {
background: var(--color-event-meeting);
&.highlight {
background: var(--color-event-meeting-hl);
}
}
&:hover {
opacity: 0.9;
}
swp-event-title {
font-size: 12px;
}
}
}
```
### Compiled (calendar-layout-css.css)
```css
swp-allday-container {
display: grid;
}
swp-allday-container swp-allday-event {
height: 22px;
padding: 2px 4px;
}
swp-allday-container swp-allday-event[data-type="meeting"] {
background: var(--color-event-meeting);
}
swp-allday-container swp-allday-event[data-type="meeting"].highlight {
background: var(--color-event-meeting-hl);
}
swp-allday-container swp-allday-event:hover {
opacity: 0.9;
}
swp-allday-container swp-allday-event swp-event-title {
font-size: 12px;
}
```
## Fordele ved CSS Nesting
1. **Mindre gentagelse** - Ingen behov for at gentage parent selectors
2. **Bedre læsbarhed** - Strukturen matcher DOM hierarkiet
3. **Lettere vedligeholdelse** - Relaterede styles er grupperet
4. **Mindre CSS** - Færre bytes i source filer
5. **Bedre organisation** - Logisk gruppering af styles
## PostCSS Plugins
- **postcss-nesting**: Konverterer nested CSS til flat CSS
- **autoprefixer**: Tilføjer vendor prefixes automatisk
- **cssnano**: Minificerer CSS i production mode
## Vigtige Noter
⚠️ **Rediger ALDRIG de compiled CSS filer direkte!**
- Alle ændringer skal laves i `src/` mappen
- De compiled filer bliver overskrevet ved hver build
⚠️ **Husk at køre build før commit**
- Sørg for at både source og compiled filer er opdateret
- Kør `npm run css:build` før du committer
## Browser Support
PostCSS sikrer kompatibilitet med:
- Chrome/Edge (sidste 2 versioner)
- Firefox (sidste 2 versioner)
- Safari (sidste 2 versioner)
## Troubleshooting
### CSS ændringer vises ikke
1. Tjek at du har kørt `npm run css:build`
2. Tjek at du redigerer filer i `src/` mappen
3. Hard refresh browseren (Ctrl+Shift+R)
### Build fejl
1. Tjek CSS syntax i source filerne
2. Sørg for at alle `{` har matchende `}`
3. Tjek at nesting er korrekt formateret