Informatik

Abitur 2020 dezentral

html

h

html Grundlagen

B

Basis Tags

F

Formular-Tags

F

Flaggen darstellen als Tabelle

html Grundlagen

Html steht für "hypertext markup language" und ist seit der Veröffentlichung der W3C in 2014 in der 5. Version. Es ist keine Programmiersprache sondern beschreibt nur die Struktur der Website. CSS (Cascading Style Sheets) sorgt für das Aussehen und wird hier leider nicht weiter behandelt. Die Browser geben allen html-Elementen einen Grundstil.

<!DOCTYPE html>
<html>
  <head>
    <title>Website Titel</title>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
  </head>
  <body>
    <h1>Heading</h1>
    <p>classic Lorem Ipsum paragrahp: Lorem ipsum dolor sit amet consectetur adipisicing elit. Voluptates quidem commodi corrupti libero laudantium deserunt impedit eaque quam,...</p>
  </body>
</html>
  • html besteht aus Tags und Attributen. Beides steht immer zwischen den "<" Klammern ">". Die Tags sind die Keywörter h1, p, body... danach können Attribute stehen wie hier z. B. name="viewport"
  • "DOCTYPE" sagt dem Browser welche html Version verwendet werden soll, wobei das "html" für die 5. Version steht.
  • als nächstes folgt der "html"-Tag, der alles umschließt
  • in den "head" kommen metadaten, die auf der Seite nicht sichtbar sind
  • in den "body" kommt der sichtbare Teil der Website
    • hier als Beispiel der erste Heading-Tag <h1> und
    • ein Paragraf-Tag

Anzumerken ist, dass unsere Schule noch nicht in 2014 angekommen ist und der Browser html 5 noch gar nicht kennt. Da hier nur die einfachsten Grundlagen behandelt werden, lässt sich das Meiste auch auf html 4 anwenden z. B. html, head, title, body, h1, p

Basis Tags

Kommentare oder hmlt kann mit <!-- und --> auskommentiert werden.

hier die wichtigsten Tags:

  • <h1></h1> heading-Tags von 1-6 definieren Überschriften
  • <p></p> Abatz / Paragraph
  • <a href="" target=""></a> ein Link mit den Attributen href für die URL und target wie der link geöffnet werden soll z.B. _blank für einen neuen Tab
  • <div></div> eine "diversion" bzw. Sektion, um Elemente zu einer Gruppe zusammen packen
  • <b></b> bold / fett
  • <u></u> underlined / unterstrichen
  • <i></i> italic / kursiv
  • <s></s> strikethrough / durchgestrichen
  • <ul></ul> unordered list / ungeordnete Liste (diese hier)
  • <ol></ol> ordered list / geordnete Liste / Nummerierung
  • <li></li> list item ein Element in einer geordneten / ungeordneten Liste
  • <hr> horizontale Linie
  • <pre></pre> preformatted text. Der Text wird genauso mit allen Leerzeichen und Zeilenumbrüchen wiedergegeben wie er geschrieben wurde
  • <sup></sup> superscript / hochgestellt
  • <sub</sub> subscript / tiefgestellt
  • <img src="" alt="" width="" height=""> image / Bild
    • alternate text, wenn das Bild nicht angezeigt werden kann und für Blinde
    • source URL zum Bild
    • width und height in Pixeln
  • <table></table> zwischen die Tags gehören die Tabellenzeilen und -felder
  • <tr></tr> table row / Tabellenzeile (braucht Felder)
  • <td rowspan="" colspan=""></td> Tabellenzelle
    • rowspan: wie viele Zeilen das Feld überspannen soll
    • colspan: wie viele Spalten (columns) das Feld überspannen soll

Jeder Tag kann die Attribute id (identifikator), class, style, dir (direction).

Beispiel

<!DOCTYPE html>
<html>
<head>
  <title>HTML Beispiel 2 zu den Basis-Tags | JS</title>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <meta author="Jakob Schmitt">
  <link rel="shortcut icon" type="image/x-icon" href="/assets/images/icons/favicon.ico">
  <meta name="robots" content="noindex"><!-- verhindert, dass das Beispiel in der Google Suche erscheint -->
</head>
<body>
  <h1 style="text-align: center">Basis-Tags</h1>
  <hr style="border-color: coral">
  <div>
    <h2>Text</h2>
    <p>Dies ist ein langweiliger Text, der <b>fett</b>, <u>unterstrichen</u>, <i>kursiv</i> oder <s>durchgestrichen</s> ist. Außerdem listet er gleich noch Sachen auf. Das ist toll, oder?<br>Uuuiiiih, ein Zeilenumbruch. Jetzt die versprochene Liste:</p>
    <ul style="list-style-type: square">
      <li>SQL</li>
      <li>PHP 7.4</li>
      <li>Javascript</li>
      <li>HTML</li>
      <ol>
        <li>HTML</li>
        <li>HTML</li>
        <li>HTML+</li>
        <li>HTML 2.0</li>
        <li>...</li>
        <li>HTML 5</li>
      </ol>
      <li>CSS</li>
    </ul>
  </div>
  <hr>
  <img src="/assets/images/website_trans_col_512.png" alt="JS-Logo">
  <p>H<sub>2</sub>O ist die Elementarschreibweise für Wasser. Zum Schluss noch einer Tabelle:</p>
  <table border=1 style="border-collapse: collapse;"><!-- border=1 gehört NICHT zu html5 und sollte NICHT verwendet werden, unser Lehrer nutzt das aber und die richtige Lösung führt hier zu weit -->
    <tr>
      <td></td>
      <td colspan=2>links</td>
      <td colspan=2>rechts</td>
    </tr>
    <tr>
      <td rowspan=2>oben</td>
      <td>1. Feld</td>
      <td>2. Feld</td>
      <td>3. Feld</td>
      <td>4. Feld</td>
    </tr>
    <tr>
      <td>5. Feld</td>
      <td>6. Feld</td>
      <td>7. Feld</td>
      <td>8. Feld</td>
    </tr>
    <tr>
      <td rowspan=2>oben</td>
      <td>9. Feld</td>
      <td>10. Feld</td>
      <td>11. Feld</td>
      <td>12. Feld</td>
    </tr>
    <tr>
      <td>13. Feld</td>
      <td>14. Feld</td>
      <td>15. Feld</td>
      <td>16. Feld</td>
    </tr>
  </table>
  <a href="/fach/#/Informatik">zurück zu Informatik</a>
</body>
</html>


Formular-Tags

Ein wichtiger Bestandteil des Webs sind Formulare. Mit ihnen kann der Benutzer z. B. Artikel schreiben / kommentieren, sich einloggen oder etwas bestellen.

<form id="myForm" method="GET" action="/include/backend.php">
  <!-- Form-Tags -->
</form>
  • damit die Information, die in die Formular-Tags eingegeben werden auch gesendet werden, müssen sie zwischen dem Form-Tag stehen (er wird oft vergessen, weil er nicht sichtbar ist)
  • method
    • GET: die Werte werden in die URL angezeigt und es ist sinnvoll, wenn es als Lesezeichen gespeichert oder geteilt werden soll (z. B. Jbschmitt.de/suche?q=html
    • POST: ist nicht limitiert und sollte unbedingt für sensible Daten wie Passwörter verwendet werden.
  • action: URL, an die die Daten gesendet werden

<fieldset>
  <legend>Felder gruppieren</legend>
  <label for="sirAndLastName">Name</label><br>
  <input type="text" name="sirlastname" id="sirAndLastName" placeholder="Julian Landwehr"><br>
  <label for="age">Alter</label><br>
  <input type="number" name="age" id="age" value="18.5" required><br>
<fieldset>
<br>
  • fieldset: nutzt man um Formularfelder zu gruppieren
  • legend: beschriftet diese Gruppen
  • label:
    • zum beschriften von Formularfeldern
    • Wichtig für Blinde, dass man dieses Element nimmt anstatt z. B. eines <h2> oder <p>
    • for="id" sagt, zu welchem Input das Label gehört; die Id des Inputs
  • input:
    • name: unter dem wird die Information (der Value) gesendet
    • placeholder: Platzhalter, zum Anzeigen eines Beispiel
    • type: text, number, submit, reset, password, button, um einige zu nennen; was für ein Input-Feld es ist. Den richtigen Typen zu wählen, obwohl auch text gehen würde hat den Vorteil, dass z.B. das Passwort unkenntlich als die schwarzen Punkte dargestellt wird oder bei number ein Nummernfeld als Tastatur auf Smartphones erscheint als die mit Buchstaben
    • value: dieser Wert kann vorgegen werden und wird gesendet
    • required: hat keinen Wert; bestimmt, dass das Formular nur abgesendet werden darf wenn das Feld nicht leer ist

<fieldset>
  <label for="sirName">Lieblingsfach</label>
  <select name="favsubject" id="favSubject" size=2>
    <option value="math">Mathe</option>
    <option value="pe">Mathe</option>
    <option value="english">Mathe</option>
    <option valeu="math!">Mathe!</option>
  </select>

Eine Auswahlliste braucht option-tags, zwischen denen der Nutzer auswählen kann. size gibt an wie viele Optionen gleichzeitig angezeigt werden sollen. Wie im Beispiel zu sehen wird Mathe angezeigt, aber es wird der value gesendet. (Klar, dass das nicht empfohlen ist.)

  <h2>Browser, die ich hasse</h2>
  <label><input type="checkbox" name="browser[]" value="Chrome">Chrome</label>
  <label><input type="checkbox" name="browser[]" value="Opera">Opera</label>
  <label><input type="checkbox" name="browser[]" value="Firefox">Firefox</label>
  <label><input type="checkbox" name="browser[]" value="Safari" checked>Safari</label>
  <label><input type="checkbox" name="browser[]" value="Edge">Edge</label>
  <label><input type="checkbox" name="browser[]" value="IE" checked>Internet Explorer</label>

Hier ist das Input-Feld im Label-Tag. Dadurch weiß der Browser auch welches Feld gemeint ist. Das Label ist auch anklickbar, um die Checkbox anzuticken. Es ist auch möglich jedesmal einen anderen Namen zu wählen (dann ohne []), hier ergibt es aber mehr Sinn, diese zu eine Liste (Array) zusammenzufügen, da sie inhaltlich zusammen gehören. Würde man "browser" statt browser[] nehmen, würde nur das letzte angetickte Feld übermittelt, da es alle vorherigen überschreibt. "Checked" tickt ein Feld schon an.

  <h2>Editor</h2>
  <label><input type="radio" name="editor" value="dickhead" required>Notepad</label>
  <label><input type="radio" name="editor" value="idiot">Phase 5</label>
  <label><input type="radio" name="editor" value="okay">Notepad++</label>
  <label><input type="radio" name="editor" value="good">Atom</label>
  <label><input type="radio" name="editor" value="good">Visual Studio</label>
</fieldset>
<br>

Bei "radio" muss der Name der gleiche sein und darf nicht [] enthalten. Auch wenn das "required"-Attribute im ersten Input[typ="radio"] steht, muss nicht unbedingt dieses angewählt werden, sondern nur eins, dass den gleichen Namen hat (hier also alle 5).

  <textarea placeholder="Kommentar"></textarea><br>
  <button type="submit">Daten senden</button>
</form>
  • textarea: für viel Text
  • button:
    • type="submit" zum Senden des Formulares
    • type="button" macht nichts. Sinnvoll für Javascript
    • type="reset" zum Leeren bzw. Zurücksetzen des ganzen Formulares (Sollte NICHT verwendet werden, weil Nutzer ihn, weil er oft neben dem submit-Button liegt, aus versehen klicken. Die Seite kann auch neugeladen werden, um das Formular zurück zu setzen.)


Flaggen darstellen als Tabelle

Diese Übung kann spielerisch die Eigenschaften von Tabellen beibringen. Auch wenn ich dies nur für bedingt zielführend halte, da Tabellen eher kaum im Web Gebrauch finden. Heutzutage werden CSS Grid und Flexbox genutzt. Dennoch:

Estland

Die Flagge Estlands

Weißrussland

Die Flagge von Weißrussland

nutze folgendes Bild: https://i.imgur.com/JLdHIoh.png

Schweden

Die Flagge Schwedens


Die Lösungen gibt's später. ;)