Montag, 14. April 2014

Kurs Tag 7 - HTML & CSS - Tabellen (Grundlagen)

Mitschrift 14.04.2014

TAG 7


Besprechung der letzten Kochbuchprojekte


<em>= physikalisches Tag, welches Text als besonders wichtig hervorhebt
Meta-info: empatisch


Hinweis: 
  • Textausrichtung in Tabellen - 
    • v-align=top (vertical align), damit in der Tabelle der Text linksoben anfängt: <ol style="v-align: top";>...
  • alt-Attribut - alternativtext, falls Bild nicht <img border="0" alt="" src="../bilder/vegetarisch1.jpg" width="30%" height="100%" />

Tipp: bevor wir ein Projekt rausgeben - immer nochmal den Funktionstest für alle Seiten/Elemente/Links machen! In der IT spricht man von Konsistenz  - ist es einheitlich auf jeder Seite dargestellt und tituliert?


Tabellen

Link zu Selfhtml/Tabellen
neues dokument - tabelle1.hml

ähnlich wie bei Listen, brauchen wir auch bei Tabellen einen umfassenden Tag, der zeigt: "dieser Bereich zeigt eine Tabelle!"

<table>-Tag
Achtung vor Falschschreibung - Blaufärbung im Browser zeigt Richtigkeit an:
also nicht tabel sondern table!

benötigt schließendes Tag: </table>

Wie ist eine Tabelle aufgebaut?
klassische Tabelle - bspw. Excel:
Eine Tabelle besteht aus:
  • Spalten 
  • Zeilen 
HTML arbeitet nach einem anderen Prinzip als Excel - und zwar über die Zeilen  
<th>-Tag (table head / erste Zeile als Ersatz für <td> in der ersten Row!
  • ist automatisch fett und zentriert! (kann ich nur mit CSS "knacken"/verändern)
  • bildet die Spaltenüberschrift
  • sind für Überschriften reserviert
<tr> -Tag (table row/Tabellenzeile)
innerhalb einer Row, benötigen wir Datenzellen:
<td>-Tag (table data/Tabellenzelleninhalt) hier kommen Inhalte rein!

-> alle Tags in einer Tabelle benötigen schließende Tags!

Tipp: Rahmen um die Tabelle:  
Damit wir eine Tabelle sichtbar machen können, setzen wir innerhalb des table-tags ein Attribut ein: border="1":
<table border="1">...

Matrix (einfach):
<!doctype html>
<html>
    <head>
        <title>Tabelle 1</title>
       
    </head> <!-- Tabellenrumpf -->
        <table border ="1">
            <tr> <!-- Tabellenzeile -->
                <td>Tabellenzelle</td><!-- Tabellenzelle (table-data-cell) -->
                <td>Tabellenzelle</td>
                <td>Tabellenzelle</td>
                <td>Tabellenzelle</td>
            </tr>
           
            <tr> <!-- Tabellenzeile -->
                <td>Tabellenzelle</td><!-- Tabellenzelle (table-data-cell) -->
                <td>Tabellenzelle</td>
                <td>Tabellenzelle</td>
                <td>Tabellenzelle</td>
            </tr>
           
            <tr> <!-- Tabellenzeile -->
                <td>Tabellenzelle</td><!-- Tabellenzelle (table-data-cell) -->
                <td>Tabellenzelle</td>
                <td>Tabellenzelle</td>
                <td>Tabellenzelle</td>
            </tr>
       
       
        </table>
    <body>
       
    </body>
</html>
tabelle1.html - Ausgabe im Browser

Matrix mit <th>-Tag / Head :

<!doctype html>
<html>
    <head>
        <title>Tabelle 1</title>
       
    </head> <!-- Tabellenrumpf -->
        <table width="400 "border ="3">
            <tr> <!-- Tabellenzeile -->
                <th>Headline 1</th><!--Spaltenüberschrift: Ausgabe automatisch fett & zentriert)-->
                <th>Headline 2</th>
                <th>Headline 3</th>
                <th>Headline 4</th>
            </tr>
           
            <tr> <!-- Tabellenzeile -->
                <td width="25%">Tabellenzelle</td><!-- Tabellenzelle (table-data-cell) -->
                <td>Tabellenzelle</td>
                <td>Tabellenzelle</td>
                <td>Tabellenzelle</td>
            </tr>
           
            <tr> <!-- Tabellenzeile -->
                <td>Tabellenzelle</td><!-- Tabellenzelle (table-data-cell) -->
                <td>Tabellenzelle - <br /> wird zur Anschaulichkeit mal größer gemacht
                    </td>
                <td>Tabellenzelle</td>
                <td>Tabellenzelle</td>
            </tr>
           
            <tr> <!-- Tabellenzeile -->
                <td>Tabellenzelle</td><!-- Tabellenzelle (table-data-cell) -->
                <td>Tabellenzelle</td>
                <td>&nbsp;</td>
                <td>Tabellenzelle</td>
            </tr>
       
       
        </table>
    <body>
       
    </body>
</html>

tabelle1-modifiziert.html - Table mit Head :)

Tabelle-Aufbau in HTML:
Rumpf > Reihe (ist Container für Zellen) > Zelle(n)
-> aus den nebeneinandergestellten Zellen heraus bilden sich Spalten!
aus den nebeneinandergestellten Zellen heraus bilden sich Spalten!


Aufgabe: Vergrößern Sie die Zelleninhalte durch längeren Text und Breaks in den Zellen. Experimentieren Sie mit den Zelleninhalten - nehmen Sie welche heraus etc.

Regeln:
  • Hauptregel einer Zelle: Durch Inhalt oder andere Angaben, ist die maximale Breite einer Spalte gültig!
    Die Zellenbreite wird vom Inhalt bestimmt!!! die Tabelle ist von Grund aus dynamisch: die Zellen-Höhe und -Breite passt sich automatisch der Länge des Textes an.
    • Hinweis: Inhalt vor Attributangaben! gebe ich bspw 25% für die Zellenbreite an, aber der Text einer anderen Zelle in der Spalte ist größer (aufgrund des Inhaltes), dann ist die Prozentangabe nichtig!
  • der Browser verzeiht auch nicht geschlossene table datas - aber es ist syntaktisch nicht korrekt - beeinflusst die Lesbarkeit negativ! Bitte nicht versuchen Zeichen zu sparen, sondern syntaktisch korrekt arbeiten!
  • Egal ob man eine Zelle leer lässt oder eine <td> weglässt (fehlende Zelle) - das Ergebnis ist eine Lücke in der Tabelle - wenn wir eine leere Zelle produzieren wollen, besser ein erzwungenes Leerzeichen einsetzen: &nbsp; sonst werden die Zellen aufgerückt :(
  • -> ERGO: die Anzahl der <td>s in den <tr>s muss immer gleich sein!!!

Welche Attribute können wir dem table-Tag geben?
hier ein Link zu Selfhtml - hier wird angegeben, welche Attribute die Table-Tags annehmen können!
Nochmal: Attribute sind Paare aus Schlüssel & Wert. Sie werden durch ein Leerzeichen getrennt!
  • border="" (bspw. 1,5...)
    • Rahmenlinien
    • verleiht der Tabelle ihr Erscheinungsbild durch Setzung eines Rahmens
  • width="" (bspw. 200, 800...)
    • = Breite der Tabelle 
    • nur nummerischer Wert, keine Maßeinheiten!
    • Hinweis zur Mindestbreite: die Tabelle kann nur so klein werden, wie der größte Inhalt einer Zelle an Zeichen hat bzw. an Platz benötigt!
    • wir können die Width auch in jede einzelne Zelle schreiben: <td width="25%" 
      • Wir müssen es nicht in jeder Zelle eingeben, da maximal nur die Gesamtbreite des Browserfensters der Tabelle als Breite zur Verfügung steht! 
  • bgcolor="" (kann ich nicht nur für table sondern auch für body nutzen)
    • Backgroundcolor/Hintergrundfarbe
    • kann direkt gesetzt werden 
    • sowohl namedcolor als auch Hexadezimalangaben!
    • hat nichts mit CSS zu tun!
    • wenn wir die border rausnehmen bzw. auf null setzen, sehen wir dank der Hintergundfarbe trotzdem Zellen! :)
  • cellspacing="" (bspw. 10...)
    • Außenabstand um die Zellen!!!
    • der Abstand der einzelnen Zellen ist gewachsen - 10 px bei "10", oder 30 px bei "30" 
    • der Außenrahmen wächst mit!
    • =Abstand der einzelnen Zellen zur nächsten Zelle und zum Rand!
  • cellpadding="" (bspw. 10)
    • Innenabstand in der Zelle!!!
    • der Abstand des Zelleninhaltes zum Zellenrand ist gewachsen

  • valign=""
    • mit diesem Attribut können wir alle Zelleninhalte ausrichten
    • <td valign=""> 
      • top
      • middle
      • bottom
      • (baseline)
  • colspan="" ("1"... maximal Anzahl der Spalten)
    • column span (=Zellen verbinden) -> in xls ganz easy
    • wenn ich jetzt in die <td colspan="2" angebe, dann schiebt er die anderen Zeilen nach rechts...
      ERGO: Wir müssen eine Zelle entfernen!!!
Aufgabe: Bitte verbinden Sie die beiden Zellen neben der Bundestagszeile:
Lösung: eine der beiden tds löschen und bei der anderen <td colspan="2"> eintragen. Tadaaa! :)
    • Hinweis: Die Summe aller colspans muss nachher wieder 4 (Anzahl der tds wie bei den anderen Zeilen!) ergeben



Aufgabe: jetzt 3 Zellen verbinden und nachher sogar 4 Zellen verbinden!
  • rowspan="" ("1"... maximal Anzahl der Zeilen!)
    • Reihen verbinden!
    • also in der einen tr - die td
    • eine Zelle erstreckt sich in einer Spalte über mehrere Zeilen hinweg (rowspan = Zeilen spannen). 
    • Die Angabe ist nur wirksam, wenn die Tabelle mindestens so viele Zeilen besitzt wie angegeben. - klar! ;)

Hinweis: Die Ur-Table ist nur dafür vorgesehen Inhalte zu strukturieren - aber mit CSS können wir sie später auch schöner gestalten!

Aufgabe: bauen Sie diese Tabelle nach! - colspan und rowspan!

Tipps zum Tabellenbau!
Wenn wir eine Tabelle planen, dann zunächst auf dem Papier!
von Außen nach Innen arbeiten!
Am Besten keine Tabellen mit copy & paste erstellen, sondern besser immer von Grund auf neu erstellen.
  1. erst Grundgerüst (HTML, head, body)
  2. dann Tabellenrumpf <table></table> (evtl border= setzen)
  3. dann Tablerows <tr></tr>
  4. dann Table Data reinsetzen (Zellen) <td></td>
  5. und mit Inhalten füllen
  6. zuletzt formatieren mit weiteren Attributen

(Haus-)Aufgabe: Rechnungsmuster nachbauen
Ziel aus der HTML-Datei eine pdf generieren

Wie gehe ich vor?
  1. audrucken und 
  2. alles mit Linien in Tabellenfelder setzen!
Wofür brauchen wir Tabellen?  
Rechnungen, ...

Keine Kommentare:

Kommentar veröffentlichen