Style (Sass)
Hoe zit de Sass-architectuur in elkaar? We willen graag strak en clean houden met het Sass 7-1 patroon:
Het principe is simpel: 7 mappen voor de deeltjes (partials), en 1 hoofdbestand (main.scss) dat alles in de juiste volgorde samenbindt. Elk bestand heeft één duidelijke verantwoordelijkheid.
De 7 Mappen (Van Abstract naar Concreet)
abstracts/– De blauwdrukken (genereert zelf geen CSS). Bevat_variables.scss(kleuren, breakpoints) en_mixins.scss(media queries, grids).base/– De fundamenten. Bevat_base.scssvoor de globale HTML-resets (box-sizing), standaard typografie (body,h1,p) en margins.layout/– Het skelet. Bevat de macro-blokken van de site:_header.scss,_main.scss(page wrapper), en_footer.scss.components/– De bouwstenen. Herbruikbare, geïsoleerde UI-elementen zoals_button.scss,_card.scssen_navbar.scss. Regel: Nest maximaal 3 niveaus diep en gebruik zo min mogelijk classes.pages/– Pagina-specifiek. Gereserveerd voor unieke pagina’s. De unieke styling voor de/menupagina staat bijvoorbeeld incomponents/_menu.scss(of hier als_menu.scss).themes/– Thema’s. Gereserveerd voor bijvoorbeeld een toekomstige dark mode.vendors/– Derden. Gereserveerd voor externe CSS/Sass (bijv. normalize).
De 1: main.scss (De Verkeersleider)
Dit bestand staat in de root van de sass map, bevat zelf geen styling, maar regelt de exacte volgorde van de @import keten. Hierdoor druppelen variabelen en mixins automatisch door naar de onderliggende componenten:
/* ==========================================================================
Main Stylesheet - Sass 7-1 Pattern
========================================================================== */
// 1. Abstracts (Moeten ALTIJD eerst)
@import "abstracts/variables";
@import "abstracts/mixins";
// 2. Base
@import "base/base";
// 3. Layout
@import "layout/header";
@import "layout/main";
@import "layout/footer";
// 4. Components
@import "components/hero";
@import "components/button";
@import "components/navbar";
@import "components/card";
// Dev tools
@import "debug";
Waarom we dit doen:
- Leest als een boek: Geen spreadsheets van 3000 regels; je weet exact in welke map je moet zoeken.
- Robuust & Responsive: Responsive logica en metrics (zoals
$breakpoint-medium) centraal geregeld via mixins. Dit houdt de componenten clean en onderhoudbaar voor iedereen.