HTML (Hypertext Markup Language) ist eine textbasierte Auszeichnungssprache.
Ihre Dokumente (.html Dateien) sind die Grundlage des World Wide Webs
und werden von unseren Webbrowsern decodiert und dargestellt.
Der Head in HTML ist ein Container der Elemente enthält, die oft von Browsern benutzt werden.
-
<head> </head>
- Öffnet und schließt den Head-Container
Elemente:
-
<title> Titel </title>
- Fügt der Seite einen Titel hinzu, der von Browsern z.B im Tab oder für Favoriten benutzt wird
-
<style> p {color:red] </style>
- Wird benutzt um im Head selber Style-Informationen zu integrieren
-
<link rel="stylesheet" href="style.css">
<link>
wird am meißten benutzt, um Stylesheets oder Favicons extern einzubinden
-
<meta charset="UTF-8">
<meta>
wird benutzt um Metadaten wie Autor, Beschreibung, Charset und Viewport
- <script>
function myFunction() {
document.getElementById("demo").innerHTML = "Hello JavaScript!";
}
</script>
- Mit ```<script></script>``` kann man **Skripts** von **Javascript** integrieren
<body></body>
ist der Main-Container der Seite und enthält
somit den gesamten Content
Hier ist der Body dieser index.html als Beispiel:
Es gibt ein paar nützliche Tools um Text und Boxen besser zu Strukturieren und damit auch übersichtlicher zu machen:
-
<p color=red> Dies ist ein Paragraph </p>
<p></p>
wird benutzt um eine Zeile an Text zu gruppieren und ggf. letztendlich entweder Inline oder mit CSS zu gestalten.
-
<div class="box"> </div>
<div></div>
teilt ein Dokument in Sektionen oder Divisionen in Blöcke ein, um z.B eine Box zu erschaffen, in der bestimmter Content steht. Mit CSS kann man dann auf die Klasse (in dem Beispiel) .box zugreifen und auch die Box als gesamtes gestalten.
-
<span style="background-color:lightblue"> Text! </span>
<span></span>
ist eigentlich genau wie<div></div>
, nur dass es nicht block ist sondern inline. Es teilt also keine Sektionen in blöcke, sondern in Abschnitte in z.B Texten ein, die dann mit CSS oder JavaScript angezapft werden können.
-
Dies<br>ist<br>ein<br>Text
-
<b>mit dem b tag mache ich Text fett</b>
- mit
<b>text</b>
mache ich Text fett.
- mit
-
<q>Quotationmarks</q>
- Text, der mit
<q></q>
eingebettet wird, wird inQuotationmarks
eingehüllt.
- Text, der mit
- <ol>
<li> Schritt</li>
<li> Schritt</li>
<li> Schritt</li>
</ol>
So sieht es dann im Browser aus:\
- Schritt
- Schritt
- Schritt
Der Inhalt der Liste wird nummeriert, also sortiert.
Das eignet sich zum Beispiel für Schritte von Rezepte oder Anleitungen.
- <ul>
<li> Aufzählung</li>
<li> Aufzählung</li>
<li> Aufzählung</li>
</ul>
So sieht es dann im Browser aus:
- Aufzählung
- Aufzählung
- Aufzählung
Der Inhalt wird unsortiert einfach mit Punkten aufgezählt. Das eignet sich zum Beispiel für die Zutatenliste eines Rezepts.
Die Tags in HTML sind dazu da, den Content auf die Seite zu kriegen, und CSS um diesen zu gestalten.
-
<a href="https://www.planeo.de">Planeo Hyperlink!</a>
Hyperlinks werden mit <a href="URL">Name</a>
verlinkt.
Als value für das Attribut href gibt man dann z.B eine Webadresse an.
Planeo.de Hyperlink!
Wenn man zwischen Websiten navigiert muss man aber die volle Webadresse benutzen.
(https://www.*)
-
<!-- Dies wäre ein Kommentar -->
Kommentare können benutzt werden um Code zu strukturieren und um
z.B Mitarbeiter aufzuklären was da im Code eigentlich steht und
wofür es da ist.
Kommentare werden nicht als HTML Code interpretiert und somit nicht
aufgefangen.
-
<h1>Überschrift</h1>
Mit den tags <h[1-6]></h[1-6]>
definiert man Überschriften von verschiedenen
Größen, wobei <h1></h1>
das größte und <h6></h6>
das kleinste ist:
-
<img src="../imgs/headings.png" alt="clueless">
- Mit dem tag img kann man Bilder einbetten.
Mit<img src="bild.png">
gibt man den Pfad an, und mit
<img alt="alternate">
gibt man eine Art Backup-Text an, falls das Bild nicht lädt.
- Mit dem tag img kann man Bilder einbetten.
-
<video controls><source src="video.mp4" type="video/mp4"></video>
- Mit
<video></video>
gibt man den Pfad des Videos mit
<source src="video.mp4 type="video/mp4">
im video Container.
Das Attribut<video controls>
aktiviert die Kontrolle über den Video-Player (so wie play, pause und volume)
- Mit
-
<audio controls><source src="audio.mp3" type="audio/mpeg"></audio>
- Mit
<audio></audio>
gibt man den Pfad der Audio mit
<source src="audio.mp3 type="audio/mpeg">
im audio Container.
Das Attribut<audio controls>
aktiviert die Kontrolle über den Audio-Player (so wie play, pause und volume)
- Mit
Ein Favicon ist das kleine Bild links bei den Browser-Tabs:
Man verlinkt sie mit <link rel="icon" type="image/x-icon" href="favicon.ico">
im Head:
Auf Seiten wie https://www.favicon.cc/ kann man kostenlos eigene Favicons pixeln.
<form></form>
ist dazu da, um Webformulare zu erstellen und Benutzerdaten
einzusammeln.
Diese Daten werden dann oft an einen Server geschickt
um sie zu verarbeiten.
-
<form> <input type="text"> </form>
In den Container kommt dann eines der meißtbenutzten Attribute, <input type="">
.
Mit dem input type
kann man dann die Art des Inputs angeben, standardmäßig text.
- <form>
<label for="test">Testtext</label><br>
<input type="text" id="test" name="test">
</form>
- Mit
<label for="">...</label>
kann man sozusagen dem input eine Überschrift geben und so ihren Nutzen erklären.
Dafür muss man beim Label dann die id des inputs angeben.
So sieht das dann im Browser aus:
Testtext
- <form>
<label for="test">Testtext</label><br>
<input type="text" id="test" name="test">
<input type="submit">
</form>
- Mit
<input type="submit">
kann man einen Submit button hinzufügen, um das Formular abzuschicken:
So sieht es dann im Browser aus:
Testtext
- <form action="test.php">
<label for="test">Testtext</label><br>
<input type="text" id="test" name="test">
<input type="submit">
</form>
- Aber wohin wird das Formular dann geschickt?
Das spezifiziert man dann mit<form action="test.php">
.
Man kann das Formular z.B an ein PHP-Dokument schicken, um es dort verarbeiten zu lassen.
- <form action="test.php" method="get">
<label for="test">Testtext</label><br>
<input type="text" id="test" name="test">
<input type="submit">
</form>
Es gibt zwei Methoden, wie das Formular abgeschickt wird.
Standardmäßig ist das <form action="" method="get">
.
Diese Methode ist gut dafür,
falls man die Formularergebnisse z.B bookmarken möchte.
Wenn man allerdings sensible Informationen über das Formular abschickt, z.B
Passwörter, dann sollte man niemals get, sondern <form action="" method="post">
benutzen,
da bei der Methode post, die Daten nicht, anders wie bei get,
in der URL angezeigt werden, sondern in der HTTP Anfrage selbst.
Dazu kommt das 3000 character limit bei get, welches es bei post nicht gibt.
- <form>
<label for="test">Testtext</label><br>
<textarea id="test" rows="4" cols="30">Das ist ein 4 Reihen Textfeld</textarea><br>
<input type="submit">
</form>
- Mit dem Element
<textarea></textarea>
kann man ein Textfeld mit vorgegebener Basis-größe erschaffen.
So sieht es dann im Browser aus:
Testtext
<textarea id="test" rows="4" cols="30">Das ist ein 4 Reihen Textfeld</textarea>
- <form>
<label for="test">Lieblingsobst</label><br>
<select id="test">
<option value="Apfel">Apfel</option>
<option value="Birne">Birne</option>
<option value="Orange">Orange</option>
</select>
<input type="submit">
</form>
- Mit dem
<select></select>
Element kann man statisches dropdown-menü erstellen, bei dem nur die vorgegebenen optionen verfügbar sind:
-So sieht es dann im Browser aus:
Lieblingsobst
Apfel Birne Orange
-
<button>dieser button macht nix</button>
- Mit dem
<button></button>
Element kann man einen button hinzufügen. Dem kann man auch z.B mit dem Attribut<button onclick="">
ein Event zuweisen. - dieser button macht nix
- Mit dem
- <form>
<fieldset>
<legend>Fragen</legend>
<label for="test">Lieblingsobst</label><br>
<select id="test">
<option value="Apfel">Apfel</option>
<option value="Birne">Birne</option>
<option value="Orange">Orange</option>
</select>
<input type="submit">
</fieldset>
</form>
Mit dem Element <fieldset></fieldset>
kann man ein Ramen um Teile des Formulars machen,
um sie besser zu strukturieren.
Mit <legend></legend>
gibt man diesen Feldern dann eine "Überschrift":
Apfel Birne Orange
- <form action="test.php">
<fieldset>
<legend>Lieblingsauto?</legend>
<input type="radio" id="y" name="fav_car" value="mercedes">
<label for="y">Mercedes</label><br>
<input type="radio" id="n" name="fav_car" value="bmw">
<label for="n">BMW</label><br>
<input type="radio" id="n" name="fav_car" value="VW">
<label for="n">VW</label><br>
<input type="submit">
</fieldset>
</form>
Mit dem input-type <input type="radio">
kann man Gruppen von
Auswahl bilden, von der man aber immer nur eine Option auswählen kann.
BMW
VW
- <form action="test.php" method="post">
<fieldset>
<legend>Anhang</legend>
<label for="sfile">Select one file: </label>
<input type="file" id="sfile" name="anhang"> <br> <br>
<input type="submit">
</fieldset>
</form>
Mit dem input-type <input type="file">
kann man die möglichkeit geben,
eine Datei hochzuladen. Um zu erlauben, dass mehrere Dateien hochgeladen werden,
kann man dem Element <input>
das Attribut multiple
geben.
Bei Datei-Uploads muss die form-method <form method="post">
sein!
hidden
- <form>
<fieldset>
<legend>Hidden Input!</legend>
<label for="test">Test Text</label>
<input type="text" id="test" name="Text">
<input type="hidden" id="hvalue" name="hvalue" value="123">
<input type="submit">
</fieldset>
</form>
Mit einem hidden-input kann man ein value zu einem Formular hinzufügen,
dass der Nutzer nicht einfach sehen und bearbeiten kann.
Mit developer tools und inspect element kann man diesen input trotzdem bearbeiten.
Es ist also nicht sicher!
- <form>
<fieldset>
<legend>Zutaten Pizza</legend>
<input type="checkbox" id="ingredient1" name="ingredient" value="pepperoni">
<label for="ingredient1">Pepperoni</label> <br>
<input type="checkbox" id="ingredient2" name="ingredient" value="zwiebel">
<label for="ingredient2">Zwiebel</label> <br>
<input type="checkbox" id="ingredient3" name="ingredient" value="doenerfleisch">
<label for="ingredient3">Doenerfleisch</label> <br>
<input type="checkbox" id="ingredient4" name="ingredient" value="schinken">
<label for="ingredient4">Schinken</label> <br> <br>
<input type="submit">
</fieldset>
</form>
Mit dem checkbox-input kann man eine Gruppe von Optionen erstellen, von der man so viele wie man will, oder auch garkeine Option auswählen kann.
Zutaten Pizza PepperoniZwiebel
Doenerfleisch
Schinken
<table>
<caption>Überstunden</caption>
<tr>
<th>Montag</th>
<th>Dienstag</th>
<th>Mittwoch</th>
<th>Donnerstag</th>
<th>Freitag</th>
<th>Samstag</th>
<th>Sonntag</th>
</tr>
<tr style="text-align: center">
<td>1</td>
<td>2</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>2</td>
<td>0</td>
</tr>
</table>
- Den Container öffnet man mit
<table></table>
- Eine neue table-row öffnet man mit
<tr></tr>
- Für Überschriften benutzt man table-heading
<th></th>
für Zellen - Für normale Zellen benutzt man table-data
<td></td>
- Man kann der ganzen Tabelle mit
<caption></caption>
auch eine Überschrift geben
So sieht das dann im Browser aus:
Montag | Dienstag | Mittwoch | Donnerstag | Freitag | Samstag | Sonntag |
---|---|---|---|---|---|---|
1 | 2 | 0 | 0 | 0 | 2 | 0 |
Ein Colspan wird benutzt, um horizontale Zellen zu verbinden:
<table>
<caption>Schüler Grundschule</caption>
<tr>
<th>Name</th>
<th>Vorname</th>
<th colspan="2">Telefonnummern Eltern</th>
</tr>
<tr>
<td>Schmidt</td>
<td>Finn</td>
<td>1234567890</td>
<td>0987654321</td>
</tr>
<tr>
<td>Meier</td>
<td>Alex</td>
<td>1234567890</td>
<td>0987654321</td>
</tr>
</table>
Name | Vorname | Telefonnummern Eltern | |
---|---|---|---|
Schmidt | Finn | 1234567890 | 0987654321 |
Meier | Alex | 1234567890 | 0987654321 |
Ein Rowspan ist dazu da, um vertikale Zellen zu verbinden:
<table>
<caption>Schüler Grundschule</caption>
<tr>
<th>Name</th>
<td>Schmidt</td>
<td>Meier</td>
</tr>
<tr>
<th>Vorname</th>
<td>Finn</td>
<td>Alex</td>
</tr>
<tr>
<th rowspan="2">Telefonnummern<br>Eltern</th>
<td>1234567890</td>
<td>1234567890</td>
</tr>
<tr>
<td>0987654321</td>
<td>0987654321</td>
</tr>
</table>
Name | Schmidt | Meier |
---|---|---|
Vorname | Finn | Alex |
Telefonnummern Eltern |
1234567890 | 1234567890 |
0987654321 | 0987654321 |
Klassen und IDs sind dazu da, um Gruppen von, oder einzele, Elemente direkt ansprechen zu können, sei es z.B. mit CSS-Design oder Scripts von JavaScript.
Der Unterschied von Classes und IDs ist, dass IDs einzigarting sein müssen,
und Classes zu so vielen Elementen benutzt werden können wie man will.
So kann man zum Beispiel einen wiederkehrenden Button mit einer Klasse versehen,
und diese per CSS ansteuern, damit man ihn nur einmal designen muss.
Beispiele:
<button class="continuebutton">
<div id="article">
Ansteuern kann man sie dann in CSS so:
- Classes
- Mit einem Punkt. Also nach dem Beispiel oben:
.continuebutton{}
- Mit einem Punkt. Also nach dem Beispiel oben:
- IDs
- Mit einem #. Also nach dem Beispiel oben:
#article{}
- Mit einem #. Also nach dem Beispiel oben:
Ein inline frame wird benutzt, um ein anderes Dokument in deine Seite einzubetten.
<iframe src="../index.html" width="500px" height="500px" title="iframe"></iframe>
So kann man, in dem Beispiel, die index.html mit 500x500px in die Seite einbetten
Responsive Web Design bedeutet eine Website zu erstellen, die auf allen
Geräten und Monitoren gut aussieht.
Die Seite muss sich also an verschiedene Breiten anpassen.
-
<meta name="viewport" content="width=device-width, initial-scale=1.0">
- Mit diesen Attributen sagt man der Website, dass sie sich an die Breite des Gerätes anpassen soll
-
<img src="bild." style="max-width: 100%">
- Wenn man die max-width von einem Bild auf 100% stellt, skaliert sie automatisch responsive. Aber nie höher als die Originalgröße.
-
<h1 style="font-size:10vw">Responsive Text!</h1>
Man kann Text responsive machen, indem man die Textgröße in vw
angibt.
vw
bedeutet viewport.
-
@media screen and (max-width: 800px) { sidebar { display:block; width: 100%; } }
- Das macht, dass der sidebar container ab einer Breite von maximal 800px zum Block-element wird und sich somit über dem main content befindet und nicht mehr daneben.