CSS Variabelen

CSS Custom Properties

Wat?

CSS Custom Properties (ook bekend als CSS Variables) maken het mogelijk om herbruikbare waarden te definiƫren die door je hele stylesheet gebruikt kunnen worden.

.heading {
	color: hsl(0,0%,0%);
}
:root {
  --heading-color: hsl(0,0%,0%);
}

.heading {
	color: var(--heading-color);
}

Zonder

Met

Fallback

Indien een variabele niet bestaat kan je een backup (of fallback) toevoegen.

:root {
  --heading-color: hsl(0,0%,0%);
}

.heading {
	color: var(--heading-color, hsl(0,0%,0%));
}

Scope en cascade

Variabelen kunnen gescoped worden op=
- :root = voor de volledige scope van de CSS (globale variabele)

- selector = voor de selector scope en de children (lokale variabele)

:root {
  --heading-color: hsl(0,0%,0%);
}

.heading {
	color: var(--heading-color, hsl(0,0%,0%));
}

.introduction {
  	--intro-color: hsl(0,0%,20%);
      
	color: var(--intro-color);
}

Overschrijven

De waarde van een variabele kan overschreven worden.

Handig om minder properties te schrijven.

:root {
  --heading-color: hsl(0,0%,0%);
}

.heading,
.subtitle {
	color: var(--heading-color, hsl(0,0%,0%));
}

.subtitle {
  	--heading-color: hsl(0,0%,20%);
}

Kan voor alle CSS waardes (nummer + unit) gebruikt worden.

Niet enkel voor kleuren

:root {
  --primary-color: hsl(204, 70%, 53%);
  --secondary-color: hsl(145, 63%, 49%);
  --text-color: hsl(0, 0%, 20%);
  --background-color: hsl(0, 0%, 100%);
  --border-radius: 1rem;
  --spacing-unit: 1rem;
  --font-size-large: 2rem;
  --transition-duration: 0.3s;
}

Met de calc() functie kan je nieuwe waarden berekenen in je variabelen.

Extra: berekeningen

:root {
  --spacing-unit: 8px;
  --spacing-sm: calc(var(--spacing-unit) * 1);
  --spacing-md: calc(var(--spacing-unit) * 2);
  --spacing-lg: calc(var(--spacing-unit) * 4);
}

Voorbeelden

Typografie systemen

:root {
  --font-size-base: 16px;
  --font-size-sm: 0.875rem;
  --font-size-lg: 1.25rem;
  --font-size-xl: 1.5rem;
  
  --font-weight-normal: 400;
  --font-weight-bold: 700;
}

Consistente spatiƫring

:root {
  --spacing-unit: 1rem;
  --spacing-sm: calc(var(--spacing-unit) * 1);
  --spacing-md: calc(var(--spacing-unit) * 2);
  --spacing-lg: calc(var(--spacing-unit) * 4);
}

.card {
  padding: var(--spacing-md);
  margin-bottom: var(--spacing-lg);
}

Transitie values/variaties

:root {
  --transition-fast: 150ms;
  --transition-base: 300ms;
  --transition-slow: 500ms;
  --easing: cubic-bezier(0.4, 0, 0.2, 1);
}

.modal {
  transition: 
	opacity 
	var(--transition-base) 
	var(--easing);
}

Component variaties

.button {
  --btn-bg: hsl(217, 91%, 60%);
  --btn-padding: 1rem 2rem;
  
  background: var(--btn-bg);
  padding: var(--btn-padding);
}

.button--small {
  --btn-padding: .5rem 1rem;
}

.button--danger {
  --btn-bg: hsl(0, 84%, 60%);
}

CSS variabelen

By Lecturer GDM

CSS variabelen

Writing clean HTML and CSS

  • 75