Sehr breite Tabelle (table) in der Breite begrenzen und Scrollbalken anzeigen

  • HTML

Es gibt 11 Antworten in diesem Thema. Der letzte Beitrag () ist von Samus Aran.

    Sehr breite Tabelle (table) in der Breite begrenzen und Scrollbalken anzeigen

    Ich habe eine HTML-Seite mit drei Tabellen (ganz klassisch mit "table"). Die drei Tabellen haben jeweils eine Breite von 98%. Die oberste und die unterste sind vom Inhalt her recht schmal, die mittlere hingegen kann u. U. sehr breit werden. Der Inhalt ist dynamisch. Sie besteht aus 5 bis 100 Spalten, die jeweils Daten enthalten.

    Das sieht also so aus:

    HTML-Quellcode

    1. <table width="98%">Wenig Inhalt #1</table>
    2. <table width="98%">VIIIIIIIIIIIIIIIEL Inhalt</table>
    3. <table width="98%">Wenig Inhalt #2</table>

    Nun überlege ich, wie ich dafür sorgen kann, dass die beiden oberen komplett sichtbar sind und man nur für die mittlere (horizontal) scrollen muss. Das 1. Problem scheint zu sein, dass sich die 98% auf die Dokumentenbreite zu beziehen scheint, nicht auf die Fensterbreite. Da die mittlere Tabelle recht breit ist, sind 98% deutlich mehr als der sichtbare Bereich.

    Das 2. Problem ist die Minimalbreite der 1. und 3. Tabelle. Während die ohne die mittlere Tabelle bei einer kleinen (Pixel-) Zahl liegt, ist sie mit der mittleren Tabelle deutlich höher. D. h. wenn ich das Fenster in der Breite verkleinere, so schiebt sich der rechte Bereich der Tabellen nicht besonders weit nach links.

    Zwei Lösungsmöglichkeiten fallen mir ein:

    1.) iframe. Fände ich aber unschön, dann muss ich mein PHP-Skript, welches die Daten generiert, umprogrammieren.
    2.) Layer (Div). Habe bisher aber noch keine gute Möglichkeit gefunden. Das Problem ist bisher auch da, dass die 1. und 3. Tabelle eine viel höhere Minimalbreite haben und man müsste für den Scrollbalken des Divs erst nach unten scrollen (Fenster-Scrollbalken) und meist erscheint auch noch der horizontale Fenster-Scrollbalken zusätzlich zum Div-Scollbalken.

    Die Frage ist: Wie ist die beste Methode und falls man es mit einem Div am besten realisiert, was muss ich da machen? Bisher habe ich beim Div mit width und overflow experimentiert.
    Besucht auch mein anderes Forum:
    Das Amateurfilm-Forum

    HTML-Quellcode

    1. <table style="position: fixed;">Wenig Inhalt #1</table>
    2. <table width="98%">VIIIIIIIIIIIIIIIEL Inhalt</table>
    3. <table style="position: fixed;">Wenig Inhalt #2</table>

    Habs jetzt nicht probiert, sollte aber vom Prinzip her klappen.

    //EDIT: Sry, genau vertauscht. Edited.
    width und overflow ist auch ein guter Anfang
    vielleicht füllst du die Tabelle mal mit zulässigen Werten:

    HTML-Quellcode

    1. <table>
    2. <!-- nur wenn du es nutzt tableset>...</tableset-->
    3. <tr><td>Das soll man sehen</td></tr>
    4. </table>
    @BjöNi: Aber wie breit sind dann die Tabellen, die du auf "fixed" gesetzt hast? Wenn's schön aussehen soll, so müssten die 98% der Fensterbreite ausfüllen.

    @Mangafreak1995: Hilft mir jetzt nicht wirklich weiter.
    Besucht auch mein anderes Forum:
    Das Amateurfilm-Forum
    Streng genommen muss das sogar ausschließlich im neuesten Firefox laufen. Ist eine Intranet-Anwendung. Da die Anwendung aber auf dem Woltlab Burning Board 1.x aufbaut, ist alles maximal HTML 4.0. Was nicht heißt, dass ich nichts auf modernes CSS umstellen kann. Die Tabellen sollten aber "table" bleiben, denn da wäre eine Umstellung viel zu aufwendig.

    Nachtrag: Der Link sieht schon ganz gut aus, teste ich morgen.
    Besucht auch mein anderes Forum:
    Das Amateurfilm-Forum
    So, habs jetzt mal so gemacht:

    HTML-Quellcode

    1. <html><head><title>test</title></head><body>
    2. <div><table style="position: fixed; width: 98%; top: 0px;"><tr><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td></tr><tr><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td></tr><tr><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td></tr></table></div>
    3. <table style="min-width: 98%; position: absolute; top: 100px;"><tr><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td></tr><tr><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td></tr><tr><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td></tr></table>
    4. <div><table style="position: fixed; width: 98%; top: 200px;"><tr><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td></tr><tr><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td></tr><tr><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td></tr></table></div>
    5. </body></html>
    In Post #2 hab ich nicht aufgepasst, da war sowohl Orginal als auch Edit falsch.



    //EDIT: Hier nochmal als JS Bin.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „BjöNi“ ()

    Samus Aran schrieb:

    Vllt. hilft dir das: jsbin.com/uxecel/4/edit

    Marcus Gräfe schrieb:

    @Mangafreak1995: Hilft mir jetzt nicht wirklich weiter.
    Ich wollte nur sagen, dass du schon den richtigen Ansatz hattest: siehe Samus Post. Die Anmerkungen mit der Tabelle war nur ne Vermutung, warum es evtl. nicht klappt.
    Ich habe nun versucht, eure Tipps anzuwenden. Grundsätzlich ist das wohl die richtige Richtung. Leider musste ich feststellen, dass ich euch wohl einige Sachen verschwiegen habe, die wichtig sind.

    Erstmal ein Screenshot der Seite:


    Das Problem ist, die Seite enthält noch mehr als nur die drei Tabellen. Wenn ich die obere und untere Tabelle "fixed" mache (die übrigens identisch sind und aus einem Template kommen), so sind eben nur diese unbeweglich, der gesamte Header der Seite (die ganze Seite ist ein Konstrukt aus Tabellen) bewegt sich mit. Ich kann aber streng genommen nur alles unter dem Header bearbeiten (also meine drei Tabellen). Der Rest ist Bestandteil der Standard-Templates des WBB-Forums. Wenn ich da auch was ändern würde, so könnte es Probleme an anderen Stellen geben (es gibt schon unzählige Unterseiten, die diese Templates verwenden).

    Sollte ich dann doch besser zum iframe greifen?
    Besucht auch mein anderes Forum:
    Das Amateurfilm-Forum
    Ich hab's gelöst!

    Habe es nun mit Javascript und jQuery gemacht. Und zwar wie folgt:

    - 1. und 3. Tabelle (die Navigation): Keine Änderung.

    - Zwischen Navigation 1 und 2 ein leeres Div:

    HTML-Quellcode

    1. $navigation1<br>
    2. <div id="tablespace">
    3. &nbsp;
    4. </div>
    5. <br>$navigation2

    - Datentabelle ganz außerhalb der anderen Tabellen, direkt vor "</body>":

    HTML-Quellcode

    1. <table cellpadding=4 cellspacing=1 border=0 bgcolor="{tableinbordercolor}" width="{tableinwidth}" id="tablecontent" style="position:absolute;">
    2. $spalten_header
    3. $daten
    4. $spalten_header
    5. </table>

    - Javascript am Ende der Seite:

    JavaScript-Quellcode

    1. $(window).resize ( function () {
    2. var t = $('#navigation1').offset().top;
    3. var l = $('#navigation1').offset().left;
    4. var h = $('#navigation1').height();
    5. $('#tablecontent').css('top', t+h+16);
    6. $('#tablecontent').css('left', l);
    7. var h2 = $('#tablecontent').height();
    8. $('#tablespace').height(h2);
    9. });
    10. $(window).resize();

    Vielen Dank an alle!
    Besucht auch mein anderes Forum:
    Das Amateurfilm-Forum
    du kannst das im Normalfall alles mit divs machen -> auch Seitennavigation wird über Php und div´s gemacht!

    - (iframes + frames nutzt man eigentlich nicht)
    - javascript kann evtl ausgeschalten sein beim Endnutzer, damit ist die Seite nicht Anwenderfreundlich, weil sie niht überall gleich ist und in deinem Fall nicht überall funktioniert.

    Naviagtion über php -- cramerz.com/php/php_include (zb)
    auch Seitennavigation wird über Php und div´s gemacht!
    Du hast keine Ahnung, wovon du redest, bitte verschwinde aus diesem Thread.

    (iframes + frames nutzt man eigentlich nicht)
    Frames haben mit IFrames nichts zu tun.

    javascript kann evtl ausgeschalten sein beim Endnutzer
    1999 hat angerufen und will seinen Bullshit zurück.

    Naviagtion über php -- cramerz.com/php/php_include
    Nein.