CSS Mega-Crashkurs

Von den absoluten Grundlagen bis zu modernen Layouts, Animationen und Responsive Design.

1. Was ist CSS?

```

CSS steht für Cascading Style Sheets. CSS bestimmt, wie eine Webseite aussieht.

HTML beschreibt hauptsächlich die Struktur. CSS übernimmt dagegen das Aussehen.

Einfach merken:
HTML = Was befindet sich auf der Seite?
CSS = Wie sieht es aus?
```

Eine CSS-Regel

p {
  color: blue;
}

p ist der Selektor. color ist die Eigenschaft. blue ist der Wert.

```

Das Grundprinzip

selektor {
```

eigenschaft: wert;
}
```

Fast jedes CSS besteht aus diesem Grundprinzip.

```

2. Selektoren

Ein Selektor bestimmt, auf welche HTML-Elemente CSS angewendet wird.

Element-Selektor

p {
  color: red;
}

Dadurch werden alle Absätze rot.

Klassen-Selektor

.box {
  background: blue;
}

Ein Punkt vor dem Namen bedeutet Klasse.

ID-Selektor

#header {
  background: black;
}

Eine Raute steht für eine ID.

Wichtig: Klassen werden häufig für CSS verwendet. IDs sollten normalerweise eindeutig sein.

3. Farben

CSS kann Farben auf verschiedene Arten darstellen.

```
red
blue
green
#8b5cf6
rgb(...)
```

Farbnamen

color: red;
background: blue;

HEX-Farben

color: #ff0000;
background: #000000;

RGB

color: rgb(255, 0, 0);

RGBA

background: rgba(0, 0, 0, 0.5);

Der vierte Wert bestimmt die Transparenz. 0 bedeutet vollständig transparent, 1 vollständig sichtbar.

4. Das CSS Box-Modell

Jedes HTML-Element kann man sich grundsätzlich wie eine Box vorstellen.

```
Inhalt
```
margin
  ↓
border
  ↓
padding
  ↓
content

Padding

padding: 20px;

Padding ist der Abstand zwischen Inhalt und Rahmen.

Margin

margin: 20px;

Margin ist der Abstand außerhalb eines Elements.

Border

border: 2px solid black;

Damit bekommt ein Element einen Rahmen.

5. Text gestalten

Schriftgröße

font-size: 24px;

Schriftart

font-family: Arial, sans-serif;

Fett

font-weight: bold;

Textausrichtung

text-align: center;

Zeilenhöhe

line-height: 1.6;

Textdekoration

text-decoration: underline;

Abstände zwischen Buchstaben

letter-spacing: 2px;

6. Display

display bestimmt, wie sich ein Element im Layout verhält.

block

display: block;

Ein Block-Element nimmt normalerweise die gesamte verfügbare Breite ein.

inline

display: inline;

Ein Inline-Element bleibt innerhalb des normalen Textflusses.

none

display: none;
Mit display: none wird ein Element vollständig aus dem Layout entfernt.

7. Flexbox

Flexbox ist eines der wichtigsten CSS-Systeme für moderne Layouts.

.container {
  display: flex;
}
```
Box 1
Box 2
Box 3
```

Abstand

gap: 20px;

Horizontale Ausrichtung

justify-content: center;

Mögliche Werte:

Vertikale Ausrichtung

align-items: center;

Zeilenumbruch

flex-wrap: wrap;

8. CSS Grid

Grid eignet sich besonders für komplexere zweidimensionale Layouts.

.container {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 20px;
}
```
1
2
3
4
5
6
```

Was bedeutet 1fr?

fr bedeutet „fraction“. Es beschreibt einen Anteil des verfügbaren Platzes.

grid-template-columns:
  1fr 1fr 1fr;

Dadurch entstehen drei gleich große Spalten.

9. Positionierung

Mit position kann man Elemente gezielt positionieren.

relative

position: relative;

absolute

position: absolute;
right: 20px;
bottom: 20px;
```
Normale Box
Absolute Box
```

fixed

position: fixed;

Das Element bleibt an einer festen Stelle des Browserfensters.

sticky

position: sticky;
top: 0;

Das Element verhält sich zunächst normal und bleibt beim Scrollen an einer bestimmten Position hängen.

10. Hover-Effekte

Mit :hover kann man festlegen, was passiert, wenn die Maus über ein Element bewegt wird.

.box:hover {
  background: blue;
}
```
Bewege die Maus hierher.
```

Transition

transition: 0.3s;

Ohne Transition springt eine Änderung sofort um. Mit Transition wird sie animiert.

11. Transform

Mit transform kann man Elemente drehen, vergrößern, verkleinern oder verschieben.

```
rotate
scale
translate
```
transform: rotate(20deg);

transform: scale(1.2);

transform: translateY(-15px);

12. CSS Animationen

CSS kann Elemente automatisch animieren.

Keyframes

@keyframes schweben {

  0% {
    transform: translateY(0);
  }

  50% {
    transform: translateY(-20px);
  }

  100% {
    transform: translateY(0);
  }

}

Animation verwenden

animation:
  schweben 2s infinite ease-in-out;
```
```
Merke: @keyframes beschreibt, WAS passiert. animation bestimmt, WIE die Animation abgespielt wird.

13. Transparenz

Mit opacity kann man ein Element transparent machen.

opacity: 0.5;
```
100%
75%
50%
25%
```

14. Schatten

Mit box-shadow können Boxen Schatten bekommen.

box-shadow:
  0 10px 30px rgba(0,0,0,0.15);

Bei einem Schatten sind besonders diese Werte wichtig:

15. Border Radius

Mit border-radius werden Ecken abgerundet.

border-radius: 20px;

Ein Kreis entsteht beispielsweise durch:

border-radius: 50%;

16. Einheiten

CSS besitzt verschiedene Einheiten.

px

font-size: 20px;

Pixel sind eine feste Einheit.

%

width: 50%;

Prozent beziehen sich häufig auf die Größe des Elternelements.

rem

font-size: 1.5rem;

rem orientiert sich an der Schriftgröße des Root-Elements.

vh und vw

height: 100vh;
width: 100vw;

vh steht für Viewport Height, vw für Viewport Width.

17. Responsive Design

Eine Webseite sollte auf Computer, Tablet und Smartphone funktionieren.

Dafür verwendet man Media Queries.

@media (max-width: 700px) {

  .grid {
    grid-template-columns: 1fr;
  }

}
Wichtig: Eine Seite sollte nicht nur auf deinem eigenen Bildschirm gut aussehen. Sie muss sich an unterschiedliche Bildschirmgrößen anpassen können.

18. CSS-Variablen

CSS kann Variablen verwenden.

:root {
  --hauptfarbe: #2563eb;
  --radius: 15px;
}

.button {
  background: var(--hauptfarbe);
  border-radius: var(--radius);
}

Dadurch kann man Farben und andere Werte zentral verändern.

19. Verläufe

Linearer Verlauf

background:
  linear-gradient(
    90deg,
    blue,
    purple
  );

Radialer Verlauf

background:
  radial-gradient(
    circle,
    white,
    blue
  );

20. Buttons richtig gestalten

.button {

  background: #2563eb;
  color: white;

  padding: 12px 20px;

  border: none;
  border-radius: 10px;

  cursor: pointer;

  transition: 0.2s;

}

.button:hover {

  transform: translateY(-2px);

}

21. Mini-Projekt: Moderne Webseite

Jetzt kombinieren wir mehrere CSS-Techniken.

.website {

  max-width: 1000px;
  margin: auto;

  padding: 30px;

}

.cards {

  display: grid;

  grid-template-columns:
    repeat(3, 1fr);

  gap: 20px;

}

.card {

  background: white;

  padding: 25px;

  border-radius: 20px;

  box-shadow:
    0 10px 30px
    rgba(0,0,0,0.1);

  transition:
    transform 0.2s;

}

.card:hover {

  transform:
    translateY(-5px);

}

22. Die wichtigsten CSS-Eigenschaften

```
  • color – Textfarbe
  • background – Hintergrund
  • font-size – Schriftgröße
  • font-family – Schriftart
  • font-weight – Schriftstärke
  • margin – Außenabstand
  • padding – Innenabstand
  • border – Rahmen
  • border-radius – abgerundete Ecken
  • box-shadow – Schatten
  • display – Layoutverhalten
  • position – Positionierung
  • width – Breite
  • height – Höhe
  • opacity – Transparenz
  • transform – Transformation
  • transition – weiche Übergänge
  • animation – Animationen
  • flex – Flexbox
  • grid – Grid Layout
```

23. Typische Anfängerfehler

```

Fehler 1: Semikolon vergessen

color: red
```

background: blue;
```

Besser:

color: red;
```

background: blue;
```

Fehler 2: Klammer vergessen

.box {
```

color: red;
```

Die schließende } fehlt.

Fehler 3: Falscher Selektor

.button {
```

color: red;
}
```

Wenn das Element diese Klasse nicht besitzt, wird die Regel nicht angewendet.

```

24. CSS lernen – die wichtigste Denkweise

```

Wenn etwas nicht funktioniert, nicht sofort alles ändern.

  1. Welches Element möchte ich verändern?
  2. Welchen Selektor brauche ich?
  3. Welche CSS-Eigenschaft ist dafür zuständig?
  4. Welchen Wert möchte ich verwenden?
  5. Gibt es eine andere CSS-Regel, die meine Regel überschreibt?
```

25. Der wichtigste CSS-Spickzettel

/* Farbe */
color: red;

/* Hintergrund */
background: blue;

/* Schrift */
font-size: 20px;
font-family: Arial;
font-weight: bold;

/* Abstände */
margin: 20px;
padding: 20px;

/* Größe */
width: 300px;
height: 200px;

/* Rahmen */
border: 1px solid black;
border-radius: 15px;

/* Schatten */
box-shadow: 0 10px 30px rgba(0,0,0,.15);

/* Flexbox */
display: flex;
gap: 20px;
justify-content: center;
align-items: center;

/* Grid */
display: grid;
grid-template-columns: repeat(3, 1fr);

/* Position */
position: relative;
position: absolute;

/* Animation */
transition: .3s;
transform: scale(1.1);

/* Transparenz */
opacity: .5;

/* Responsive */
@media (max-width: 700px) {
  ...
}