Spaltenbreite will nicht so wie ich

Django, Flask, Bottle, WSGI, CGI…
Antworten
Pitwheazle
User
Beiträge: 873
Registriert: Sonntag 19. September 2021, 09:40

Wahrscheinlich könnt ihr mir ja auch mit einem CSS Problem weiterhelfen:
Die Lehrkraft, kann die Arbeitsergebnisse ihrer Schülerinnen und Schüler als Tabelle anzeigen lassen - die Mitglieder der Gruppe untereinander, die Aufgabenkategorien nebeneinander - Bei zukünftig 35 Aufgabenkategorien kann diese recht breit werden. Ich versuche, die Spaltenbreite für die Aufgaben zu begrenzen. Der Titel ist um gedreht. Dabei bleibt der Text aber nicht in der Mitte, sondern ist weiter rechts. Ich zeige das mal in einem Screenshot:
Bild
... obwohl man im Inspektor sehen kann, dass "Ergänzen" ausgewählt ist, steht der Text weiter links.
Sobald ich den Maßstab verändere (Scrollrad) hupst der Text an die richtige Stelle und bleibt da auch bei verschiedenen Vergrößerungen - jetzt ist die Spalte aber zu breit und das lässt sich nicht ändern:
Bild
Mein Template:

Code: Alles auswählen

<!DOCTYPE html>
{% load static %}

<html lang="de">
<head>       
    <title>Rechentrainer im Web</title>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <link rel="stylesheet" href="{% static 'styles.css' %}">
    <style>
        table{
            }
        thead {line-height: 100px;
        }
        th {
            text-align: center;
            padding: 5px;             
        }
    </style>    
</head>

<header>
    <div class="navbar">
        <a href="{% url 'index' %}">&#8962 Home</a>
        <a>{{titel}}</a>
    </div> 
</header>

<body>
<table>
    <thead>
        <tr>
            <th style="width: 200px;">Name</th>
            <th style="width: 20px;">Zeit</th>
            <th style="width: 25px;">Summe</th>
            {%for kategorie in kategorien %}
                <th style="width: 20px;  writing-mode: vertical-rl; transform: rotate(180deg); vertical-align: top; {{kategorie.farbe}}">
                    {{kategorie.name|truncatewords:1}}
                </th>
            {%endfor%}
        </tr>
    </thead>
    <tbody>
        {% for schueler, dauer, aufgaben in aufgaben_der_schueler %}
            <tr >
                <td style="text-align: left";>
                    <a  class="button" href="{% url 'mein_schueler' schueler.id %}">{{schueler.vorname}} {{schueler.nachname}} {{schueler.klasse}}</a></td>
                <td>{{dauer}}</td>
                {% for quote, anzahl in aufgaben %}
                    <td class="{{quote}}">{{anzahl}}</td>
                {% endfor %}
                </td>
            </tr>
        {% empty %}
            <tr><td colspan="999"><strong>Es sind noch keine Schüler angemeldet.</strong></td></tr>
        {% endfor %}
    </tbody>
</table>
</body>
</html>
Das Stylesheet hat keinen Einfluss, auch wenn ich dieses nicht einbinde, bleibt das Problem wie beschrieben.
Ich dachte, wenn ich der Tabelle eine definierte Breite geben würde, könnte ich das Problem vielleicht lösen, habe dazu aber keine Lösung gefunden.
Pitwheazle
User
Beiträge: 873
Registriert: Sonntag 19. September 2021, 09:40

Ich habe den Fehler gefunden.
Das Problem war "thead {line-height: 100px". Wenn ich das weglasse passt alles. Eigentlich klar, line-hight legt die Höhe der Zeile fest, diese wird ja aber um 90° gedreht.
Benutzeravatar
__blackjack__
User
Beiträge: 13107
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

Ich wäre ja mit "px"-Angaben eher vorsichtig. Das sind Pixel und wie viel 100 px sind und ob da Text rein passt oder nicht, hängt von einer Menge Faktoren ab, wie zum Beispiel die Display-Auflösung.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
Benutzeravatar
__blackjack__
User
Beiträge: 13107
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@Pitwheazle: Keine Pixelangaben? Grössenangaben überhaupt nur wenn das wirklich notwendig ist. Die Grösse ergibt sich doch meistens ganz einfach aus dem Inhalt.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
__deets__
User
Beiträge: 14540
Registriert: Mittwoch 14. Oktober 2015, 14:29

Units wie em zB sollten abhaengigk von der eingestellten Schriftgroesse sein. Aber HTML-Layout ist ein Buch mit 7 Siegeln fuer mich, da gibt's kundigere. Ggf. kannst du dir da auch Hilfe in spezialisierten Foren holen.
Pitwheazle
User
Beiträge: 873
Registriert: Sonntag 19. September 2021, 09:40

__blackjack__ hat geschrieben: Donnerstag 19. Januar 2023, 14:31 @Pitwheazle: Keine Pixelangaben? Grössenangaben überhaupt nur wenn das wirklich notwendig ist. Die Grösse ergibt sich doch meistens ganz einfach aus dem Inhalt.
Ich habe sie jetzt mal rausgelöscht und muss sagen, du hast recht (Muss man hier Anführungszeichen setzen?). Ich habe aber lange an meinem obigen Problem rumgebastelt und versucht, mithilfe der Breitenangaben, dieses zu lösen, jetzt geht es auch ohne. Danke für den Hinweis!
Benutzeravatar
noisefloor
User
Beiträge: 3856
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,

verwendest du "nur" ein eigenes Stylesheet oder werkelt da noch ein CSS Framework wie Bootstrap mit?

Du kannst grundsätzlich auch die Spaltenbreite in % angeben, das kollidiert dann zumindest nicht mit einer dynamischen Skalierung. Macht IMHO aber nur Sinn, wenn du Tabelle eine überschaubare Anzahl von Spalten hat und es zwingend sein muss, dass die Spalten relativ zueinander das gleiche Breitenverhältnis haben.

Ich tendiere bei sowas aber auch immer das, Angaben erstmal weg zu lassen und erst manuell einzugreifen, wenn es zwingend notwendig ist.

Gruß, noisefloor
Pitwheazle
User
Beiträge: 873
Registriert: Sonntag 19. September 2021, 09:40

Bisher nutze ich nur mein eigenes Stylsheet.
Die Spaltenbreite in Prozent anzugeben wollte ich nicht. Je nach Lerngruppe, sind von 7 bis 35 Aufgabenkategorien anzuzeigen und da macht es m.E. keinen Sinn, die auf die Displaygröße anzupassen.
Ich habe es mal ausprobiert, es würde auch auf dem Smartphone quer ganz ordentlich abzulesen sein, ich würde es als Lehrer allerdings eher auf einem PC aufrufen (vielleicht werde ich auch noch eine Druckfunktion einbauen).
Benutzeravatar
noisefloor
User
Beiträge: 3856
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,
Bisher nutze ich nur mein eigenes Stylsheet.
Ok... Sagen wir mal so: für das, was du vorhast, ist das etwas... ungewöhnlich. Weil von Hand ist es IMHO fast unmöglich, eine Webseite zu bauen, die dynamisch skaliert UND auf allen vier Mainstream Browsern gleich aussieht UND auf jeder Displaygröße passabel aussieht. Und da du eine breite Zielgruppe hast, musst du auch von der vollen Bandbreiten der eingesetzten Endgeräte ausgehen.

Sehr gängig ist das Bootstrap CSS (verwende ich für meine Projekte), was ganz einfaches ist SimpleCSS. Es gibt aber auch noch diverse andere, gängige CSS Frameworks.

Unabhängig davon: eine HTML Tabelle mit 35 Spalten geht gar nicht, egal auf welchem Monitor. Ggf. besser z.B. auf eine Tabelle mit 12 Spalten und dafür entsprechend mehr Zeilen aufteilen?

Gruß, noisefloor
Pitwheazle
User
Beiträge: 873
Registriert: Sonntag 19. September 2021, 09:40

noisefloor hat geschrieben: Donnerstag 19. Januar 2023, 16:17
Bisher nutze ich nur mein eigenes Stylsheet.
Ok... Sagen wir mal so: für das, was du vorhast, ist das etwas... ungewöhnlich. Weil von Hand ist es IMHO fast unmöglich, eine Webseite zu bauen, die dynamisch skaliert UND auf allen vier Mainstream Browsern gleich aussieht UND auf jeder Displaygröße passabel aussieht. Und da du eine breite Zielgruppe hast, musst du auch von der vollen Bandbreiten der eingesetzten Endgeräte ausgehen.

Sehr gängig ist das Bootstrap CSS (verwende ich für meine Projekte), was ganz einfaches ist SimpleCSS. Es gibt aber auch noch diverse andere, gängige CSS Frameworks.
Bootstrap hatte ich schon mal ausprobiert, aber noch keine rechten Vorteile erkannt. Ich habe mein Projekt immer mal wieder auf verschiedenen Ansichten ausprobiert und wollte mich erst später darum kümmern, das noch etwas aufzuhübschen, bin aber eigentlich schon ganz zufrieden. Aber ich behalte das im Auge.
noisefloor hat geschrieben: Donnerstag 19. Januar 2023, 16:17 Unabhängig davon: eine HTML Tabelle mit 35 Spalten geht gar nicht, egal auf welchem Monitor. Ggf. besser z.B. auf eine Tabelle mit 12 Spalten und dafür entsprechend mehr Zeilen aufteilen?
Heißt "geht nicht" geht nicht oder sollte nicht? Ich hätte keine Idee, wie ich das anders lösen könnte. Bisher kann ich es aber noch nicht ausprobieren, ich habe halt erst 14 Kategorien.

Ich habe ja eine existierende Vorlage im Kopf und die sieht so aus:
Bild
Benutzeravatar
__blackjack__
User
Beiträge: 13107
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@Pitwheazle: „Geht gar nicht“ im Sinne von solche Monstertabellen sind unübersichtlich und fehleranfällig. Kann sein das Du das nicht nachvollziehen kannst, weil Du das gewohnt bist, aber das sehe ich so ähnlich wie Programmiersprachen mit *einem* Namensraum, Namen die 1 bis 2 Zeichen begrenzt sind, keine Verbundtypen, kein ELSE und Zeilennummern und GOTO/GOSUB. Natürlich kann man damit Programme schreiben, auch grössere, und das habe ich auch mal gemacht, und mache das aus Spass auch heute noch ab und an, aber ernsthaft geht sowas halt gar nicht.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
Benutzeravatar
noisefloor
User
Beiträge: 3856
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,
Bootstrap hatte ich schon mal ausprobiert, aber noch keine rechten Vorteile erkannt.
Na ja, wenn du "nur" den passenden Metal-Tag und den container-Tag um deinen gesamten Inhalt im body-Tag setzt, dann hast du a) ein passables Grundaussehen und vor allen Dingen b) skaliert die Webseite auf allen Browsern und Displaygrößen ordentlich.
Heißt "geht nicht" geht nicht oder sollte nicht?
Sollte nicht. Siehe __blackjakc__ Erklärung. Und selbst bei einem passable großen Monitor (27", 29" oder so) läufst du Gefahr, dass eine 35-spaltige Tabelle mit lesbarer Schrift rechts aus dem Monitor rausläuft. Über Smartphone oder Tablets brauchen wir nicht reden. Auch wenn manche iPads z.B. eine höhere Auflösung haben als ein größere Monitor, der "nur" Full-HD hat - lesbar ist das aber nicht mehr.

Gruß, noisefloor
Pitwheazle
User
Beiträge: 873
Registriert: Sonntag 19. September 2021, 09:40

noisefloor hat geschrieben: Donnerstag 19. Januar 2023, 17:28 Na ja, wenn du "nur" den passenden Metal-Tag und den container-Tag um deinen gesamten Inhalt im body-Tag setzt, dann hast du a) ein passables Grundaussehen und vor allen Dingen b) skaliert die Webseite auf allen Browsern und Displaygrößen ordentlich.
... container-tag habe ich (glaube ich), metal-tag sagt mir erstmal nix.
noisefloor hat geschrieben: Donnerstag 19. Januar 2023, 17:28 Sollte nicht. Siehe __blackjakc__ Erklärung. Und selbst bei einem passable großen Monitor (27", 29" oder so) läufst du Gefahr, dass eine 35-spaltige Tabelle mit lesbarer Schrift rechts aus dem Monitor rausläuft.
Ich glaube, da muss ich jetzt mit leben. Ich habe ja oben das existierende Beispiel gepostet und damit habe ich und meine Kolleginnen und Kollegen gearbeitet und es hat sich auch keiner beschwert. Es geht ja auch erstmal um einen Überblick. Die Lehrkraft kann anhand der grünen Zeilen sofort sehen, ob ein/e S/S ordentlich gearbeitet hat und anhand der leeren bzw. gelben oder sogar überwiegend roten Spalten erkennen, wo die Kids Nachholbedarf haben - probiert es doch mal an obigen Screensot aus, ob ihr direkt Infos entnehmen könnt, dass Moritz und Carlos nahezu nichts gearbeitet hat, Aufgaben zu "Zahlen schreiben", zu Körper und Kreisen mögen sie nicht, ebenso Funktionen und Einheiten umwandeln und beim Runden machen sie noch viele Fehler.
Benutzeravatar
Kebap
User
Beiträge: 687
Registriert: Dienstag 15. November 2011, 14:20
Wohnort: Dortmund

Ein Vorteil von Bootstrap ist, dass sie dir viele übliche Aufgaben abnehmen und passable Lösungen leicht erreichbar machen.
Da musst du dir keinen Kopf machen über Pixel oder Prozente, sondern das handhabt das Framework nach deinen Vorgaben für dich.
Beispielsweise werden die 35 Spalten je nach Gerät und Auflösung automatisch und halbwegs hübsch in mehrere Zeilen umgebrochen.
Vielleicht passen auf das Handy nur 2-3 Spalten nebeneinander, aber man kann sehr schnell nach unten und oben scrollen per Wischen.
Auf dem Tablet passen dann schon 5 Spalten nebeneinander, und auf dem Desktop kann man z.B. auch mal 10 anzeigen lassen.
Das musst du aber nicht alles ausprobieren und für jeden View das Rad neu erfinden, sondern das erledigt Bootstrap quasi nebenbei.
MorgenGrauen: 1 Welt, 8 Rassen, 13 Gilden, >250 Abenteuer, >5000 Waffen & Rüstungen,
>7000 NPC, >16000 Räume, >200 freiwillige Programmierer, nur Text, viel Spaß, seit 1992.
Antworten