Hallo Wolfgang!
Ich habe eine Tabelle in html, deren Spaltengröße ich nicht verändern kann/sollte. Gibt es eine Möglichkeit, dass sich die Schriftgröße innerhalb einer Zelle automatisch verkleinert/vergrößert, damit sie immer den ihr zur Verfügung stehenden Platz einnimmt?
Kurze Antwort: Nein (zumindest meines Wissens nach nicht)
Ich hoffe, man versteht einigermaßen, was ich möchte.
Ja, dein Wunsch ist verständlich.
Als Hilfsmittel würde mir noch JavaScript zur Verfügung stehen (auf das ich aber - wenn möglich - verzichten möchte).
Rein mit HTML als reiner Textauszeichnungssprache ist das generell nicht möglich. Aber auch unter Verwendung von CSS (welches du ja bestimmt für die Formatierung verwendest) lässt sich das so nicht realisieren.
Du hast uns zwar einige Informationen vorenthalten, u.a. ob die Größe der Tabellenzelle eine feste oder relative Größe ist und ob du für die Schriftart eine True Type oder Monospace Schriftart verwendest, aber das spielt letztlich für das Vorhaben keine entscheidende Rolle.
Grundsätzlich hast du es mit folgenden Problematiken zu tun:
Selbst wenn du per CSS eine Schriftart vorgibst, kannst du nie sicher sein, dass auf dem jeweiligen Clientrechner diese Schriftart auch vorhanden ist. Ist das nicht der Fall, "sucht" der Browser sich die "nächst passende" Schriftart für die Anzeige. Dieses Problem könnte man noch durch die Verwendung von Webfonts umgehen.
Das nächste Problem entsteht aber, wenn es sich bei der verwendeten Schriftart um eine True Type Schriftart handelt. Dann ist nämlich die Textbreite abhängig von den vorkommenden Buchstaben (ein 'i' ist bspw. viel schmaler als ein 'm') und nicht mehr nur von der Anzahl der Buchstaben, sonstigen Ziffern und Zeichen (inkl. Leerzeichen) wie bei einer Monospace Schriftart.
Hinzukommt, dass der User durch entsprechende Einstellungen in seinem Browser das "letzte Wort" zum Thema Schriftart und Schriftgröße hat (was auch gut + richtig ist). Und deiner Frage entnehme ich, dass der Text innerhalb der Tabellenzelle variabel ist.
Du müsstest also auf dem Clientrechner ermitteln (lassen), wie groß der Text ist (unter Berücksichtigung der tatsächlich verwendeten Schriftart und Schriftgröße), bzw. das Element, welches den Text umschließt. Dies könntest du per Javascript erledigen. Nun müsstest du quasi per "Trial and Error" die Schriftgröße für das Element schrittweise verkleinern (und immer wieder die Größe ermitteln), bis die Elementgröße <= dem zur Verfügung stehenden Platz innerhalb der Tabellenzelle ist.
Dabei gibt es aber diverse Problematiken:
- Die resultierende Schriftgröße könnte so klein ausfallen, dass der Text für den User unlesbar wird.
- Bei Festlegung einer Mindestgröße könnte der Text immer noch zu groß für die Tabellenzelle sein.
- Auf dem Clientrechner steht gar kein Javascript zur Verfügung, bzw. ist deaktiviert.
- Der User hätte gerne eine größere Schriftgröße
Also sicherlich_kann_man so etwas per Javascript machen. Die Frage ist nur, ob man das auch machen sollte. IMHO sollte man es nicht tun. Denn wie oben bereits erwähnt, gibt es keine (mir bekannte) 100% zuverlässige Methode. Man würde also relativ viel Aufwand für gar keinen, oder einen zumindest fragwürdigen Nutzen betreiben.
Wenn du die Größe der Tabellenzelle wirklich nicht auch nur in eine Richtung verändern kannst/ willst, würde sich ggf. noch die Verwendung eines scrollbaren Elements innerhalb der Tabellenzelle anbieten.
Allerdings "vergibst" du durch das "Festzurren" der Tabellenzellengröße einen der wesentlichen Vorteile von Tabellen, nämlich den, dass sie sich automatisch in ihrer Größe dem jeweiligen Inhalt anpassen - ganz ohne irgendwelchen sonstigen Aufwand.
Gruß Gunther