<sub class="descriptionSection">01-12-2024 12:28:pm // #Tag // [[Internetanwendungen]]</sub>
____
## Emmet Syntax
Emme ist eine Sprache zum schnellen erstellen von großen HTML Seiten.
Gutes Emmet Cheatsheet in der Prüfung: ![[Emmet Cheat Sheet & Quick Reference.pdf]]
Komplette Emmet Doku: [[cheatsheet-a5.pdf]]
### Grundlegender Syntax
Ein Emmet Syntax sieht grundlegend so aus:
```emmet
htmlElement(operator)
```
Also konkret:
```emmet
div*5
```
Output:
```html
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
```
Um Text innerhalb eines Elements einzufügen:
```emmet
div{Hello!} // output: <div>Hello!</div>
```
Um einem Element eine ID zu vergeben:
```emme
div#Hello // output: <div id="Hello"></div>
```
Um einem Element eine ID und eine Klasse zu vergeben:
```emmet
div#Hello.Mom.Dad // output: <div id="Hello" class="Mom Dad"
```
Etwas verboser kann man auch schreiben:
```emmet
p[title="Hello Mom and Dad"] //output: <p title="Hello Mom and Dad"></p>
```
In die Eckigen Klammern kann man jedes HTML Attribut schreiben
### Zähler in Emmet
In Emmet können mehrere Elemente Gleichzeitig erstellt werden in dem man `*<anzahl>` Schreibt:
```emmet
div*5 //Erstellt 5 Lehre Divs
```
Diese Zähler können innerhalb der Elemente verwendet werden:
```emmet
div{Zahl: $}*5
```
Output:
```html
<div>Zahl: 1</div>
<div>Zahl: 2</div>
<div>Zahl: 3</div>
<div>Zahl: 4</div>
<div>Zahl: 5</div>
```
Startpunkt des Zählers setzt man mit einem `@<zahl>` fest:
```emmet
ul>li.item$@2*3
```
Output:
```html
<ul>
<li class="item2"></li>
<li class="item3"></li>
<li class="item4"></li>
</ul>
```
Die Zähler kann man auch in der ID oder Klasse nehmen:
```emmet
ul>li.item$*3
```
Output:
```html
<ul>
<li class="item1"></li>
<li class="item2"></li>
<li class="item3"></li>
</ul>
```
Von oben runterzählen kann man so:
```emmet
ul>li.item$@-*3
```
Output:
```html
<ul>
<li class="item3"></li>
<li class="item2"></li>
<li class="item1"></li>
</ul>
```
### Kombinieren von Elementen
Um Child Elemente hinzuzufügen wird das `>` symbol genutzt:
```
div*2>p*5
```
Output:
```html
<div>
<p></p>
<p></p>
<p></p>
<p></p>
<p></p>
</div>
<div>
<p></p>
<p></p>
<p></p>
<p></p>
<p></p>
</div>
```
Führ mehr komplexe ausdrücke lohnt es sich die Child Elemente in eine `()` Runde klammer zu schreiben (selber output wie oben):
```emmet
div*2>(p*5)
```
Wenn man in der Ebene wieder eins nach oben gehen möchte, nimmt man den `^` operator:
```emmet
div*2>(p*5)^li*2
```
Output:
```html
<div>
<p></p>
<p></p>
<p></p>
<p></p>
<p></p>
</div>
<div>
<p></p>
<p></p>
<p></p>
<p></p>
<p></p>
</div>
<li></li>
<li></li>
```
## Grundstrucktur einer HTML 5 Seite
```html
<!DOCTYPE html>
<!-- Das ist ein HTML-Kommentar-->
<html>
<head>
<title>Titel der Seite</title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
</head>
<body>
<h1>Hier kommt der Inhalt der Seite hin</h1>
</body>
</html>
```
## CSS Files
CSS Files können eingebunden werden via:
```html
<link rel="stylesheet" type="text/css" href="formate.css">
```
im Head.
### Aufbau einer CSS Formatierung:
Jede CSS Anweisung besteht immer aus einem Selektor, der bestimmt welche HTML-Tags formatiert werden sollen. Es gibt diese Selektoren:
| Typ | Beschreibung |
| --------------------------- | ---------------------------------------------------------------------------------------- |
| Universalselektor: `*` | Formatiert alle HTML Elemente im Dokument |
| Klassenselektoren: `.class` | Erstellt eine Klasse die mehrfach verwendet werden kann in verschiedenen HTML Elementen: |
| Typeselektoren: `tagname` | Formatiert alle bestimmten HTML-Tags: `h1 {font-size: 20px}` |
| ID-Selektoren: `#id` | Formatiert nur die Elemente mit zugewiesener ID |
### Hirarchie der CSS Anweisungen
Je nachdem wie genau die CSS Anweisung geschrieben ist (also ob nur ein, zwei, oder drei Selektoren vorhanden sind) gilt eine andere Anweisung. Es gilt nur die Anweisung, die am genauesten formuliert ist (also die die meisten tags kombiniert hat).
```css
div{
background-color: white;
}
div#IDMoment{
background-color: green;
}
div.helloWorld#IDMoment{
background-color: purple;
}
```
In dem Beispiel gilt für jede `div` im Dokument: Hintergrundfarbe Weiß. Für die div mit der ID `IDMoment` würde gelten background-color: green, allerdings **nur wenn** die letzte Anweisung nicht da stehen würde, die die zweite überschreibt da sie spezifischer ist.
### Kombinieren von CSS Anweisungen
Siehe auch: [[06_CSSKombinationVonSelektoren.pdf]]
CSS Anweisungen können kombiniert werden
| Selektor | Beschreibung |
| --------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------- |
| Nachfahrselektor: `selektor1 selektor2`(z.B: `.class ul`) | Wählt alle spezifizierten Unterelemente aus. |
| Kindselektor: `selektor1>selektor2` | Wählt alle **direkten Kindelemente** aus. (Also nur die Stufe drunter => Kindelemente der Kindelemente sind nicht affected) |
| Nachbarselektor:<br>`selektor1+selektor2` | Wählt das Element **direkt nach** selektor1 aus. |
| Geschwisterselektor:<br>`selektor1~selektor2` | Wählt alle **Nachbarelemente** aus (Diese können aber nur **nach diesem Element** kommen. |
## HTML-Links
HTML Links werden per diesem Syntax hier definiert:
```html
<a href="https://Ziel.der.URL/path">Link zum Ziel </a>
```
### URLs
Eine URL (Uniform Resource Locator) besteht aus 4 Teilen:
```
protokoll://ziel/pfad/dateiname
```
Eine URL kann als Ziel in einem HTML Link verwendet werden
### Relative Pfade
In einem HTML Link kann man auch relative pfade verweden:
```
./pfad/zu/dateiname
```
Um eine Ebene im Dateibaum hochzugehen nutzt man `..`:
```
../pfad/zu/dateinamen/der/jetzt/länger/ist
```
## Bilder
Bilder im Web kann man aufteilen in zwei Kategorien:
- Pixelgrafiken
- .gif
- .jpg
- .png
- .webp
- Vektorgrafiken
- .svg
### Performance im Web
Im web muss ständig auf Performance geachtet werden und man kann bilder tweaken damit die website schneller lädt:
- Auflösung von Bildern
- Punktdichte (Detailgenauigkeit, wird gemessen in ppi, dpi, lpi)
- Lazy-Loading
### Farbmodelle
Es gibt zwei Main Farbmodelle:
- RGB (Normal im Web und bei Computern generell)
- CMYK (Normal bei Druckern, steht für Cyan, Magenta, Yellow und Key (Schwarz oder Weiß))