Ich versuche, mithilfe der Bootstrap 3-Tabelle eine Tabelle mit festem Header und scrollbarem Inhalt zu erstellen. Leider funktionieren die Lösungen, die ich gefunden habe, nicht mit Bootstrap oder bringen den Stil durcheinander.
Hier gibt es eine einfache Bootstrap-Tabelle, aber aus irgendeinem mir unbekannten Grund beträgt die Höhe des Körpers nicht 10px.
height: 10px !important; overflow: scroll;
Beispiel:
<link rel="stylesheet" type="text/css" href="//netdna.bootstrapcdn.com/bootstrap/3.0.3/css/bootstrap.min.css">
<table class="table table-striped">
<thead>
<tr>
<th>Make</th>
<th>Model</th>
<th>Color</th>
<th>Year</th>
</tr>
</thead>
<tbody style="height: 10px !important; overflow: scroll; ">
<tr>
<td class="filterable-cell">111 Ford</td>
<td class="filterable-cell">Escort</td>
<td class="filterable-cell">Blue</td>
<td class="filterable-cell">2000</td>
</tr>
<tr>
<td class="filterable-cell">Ford</td>
<td class="filterable-cell">Escort</td>
<td class="filterable-cell">Blue</td>
<td class="filterable-cell">2000</td>
</tr>
<tr>
<td class="filterable-cell">Ford</td>
<td class="filterable-cell">Escort</td>
<td class="filterable-cell">Blue</td>
<td class="filterable-cell">2000</td>
</tr>
<tr>
<td class="filterable-cell">Ford</td>
<td class="filterable-cell">Escort</td>
<td class="filterable-cell">Blue</td>
<td class="filterable-cell">2000</td>
</tr>
</tbody>
</table>
html
css
twitter-bootstrap
html-table
giulio
quelle
quelle
Antworten:
Fester Tabellenkopf - nur CSS
Einfach
position: sticky; top: 0;
deineth
Elemente. (Chrome, FF, Edge)TH grenzt Problembehebung an
Da
border
ein übersetztesTH
Element nicht richtig gezeichnet werden kann, verwenden Sie die Eigenschaft, um "Rahmen" neu zu erstellen und zu rendernbox-shadow
:Code-Snippet anzeigen
Feste Tabellenkopf - mit JS. (IE)
Sie können ein bisschen JS verwenden und die Elemente übersetzen
th
jQuery-Beispiel
Oder einfach ES6, wenn Sie es vorziehen (keine jQuery erforderlich):
quelle
Wahrscheinlich erhalten Sie mehrere Tabellen auf einer Seite, daher benötigen Sie CSS-Klassen. Hier finden Sie eine modifizierte @ giulio-Lösung dafür.
Deklarieren Sie es einfach in der Tabelle:
CSS
Beachten Sie, dass die aktuelle Implementierung nur für fünf Spalten geeignet ist. Wenn Sie eine andere Nummer benötigen, ändern Sie den Parameter width von 20% in * 100% / number_of_columns *.
quelle
.header-fixed > thead > tr > th{white-space: nowrap;}
auch hinzu. Wenn Header anfangen zu verpacken,scrollbar-width: none;
tbody aus ästhetischen Gründen hinzugefügtHier ist die Arbeitslösung:
Link zu jsfiddle
quelle
Ich benutze StickyTableHeaders auf GitHub und es funktioniert wie Charme!
Ich musste dieses CSS hinzufügen, um den Header nicht transparent zu machen.
quelle
.tableFloatingHeaderOriginal { //css }
.Benötigen Sie nicht die Verpackung in einem Div ...
CSS :
Bootply : http://www.bootply.com/AgI8LpDugl
quelle
position: absolute
auftbody
half !! Vielen Dank !!Mit CSS ist es einfacher
quelle
table-layout:fixed
indem Sie eine CSS-Klasse mit JavaScriptSpät zur Party (Geschichte meines Lebens), aber da dies das erste Ergebnis bei Google ist und keiner der oben genannten Punkte mich zum Arbeiten gebracht hat, ist hier mein Code
quelle
th:nth-child(2), td:nth-child(2)
entsprichttr > :nth-child(2)
In meinen Augen ist DataTables eines der besten Plugins für jQuery .
Es hat auch eine Erweiterung für festen Header und ist sehr einfach zu implementieren.
Entnommen von ihrer Website:
HTML:
JavaScript:
Das Einfachste, was Sie haben können, um ein Bild zu erstellen,
<tbody>
ist:quelle
Die letzte zusätzliche Position: "klebrig" wäre hier die einfachste Lösung
quelle
Du brauchst kein js. Wichtig ist, die Tabellenhöhe in [ vh ] festzulegen.
quelle
Ich hatte große Probleme, die stickytableheaders-Bibliothek zum Laufen zu bringen. Bei etwas mehr Suche stellte ich fest, dass floatThead eine aktiv gewartete Alternative mit aktuellen Updates und besserer Dokumentation ist.
quelle
Sie sollten es mit "display: block;" versuchen. zu tbody, weil es jetzt Inline-Block ist und um die Höhe einzustellen, sollte das Element "Block" sein
quelle
Fügen Sie zuerst ein Markup für eine Bootstrap-Tabelle hinzu. Hier habe ich eine gestreifte Tabelle erstellt, aber auch eine benutzerdefinierte Tabellenklasse hinzugefügt
.table-scroll
, die der Tabelle eine vertikale Bildlaufleiste hinzufügt und die Tabellenüberschrift beim Scrollen nach unten korrigiert.CSS
quelle
Ich habe das floatThead jQuery-Plugin verwendet ( https://mkoryak.github.io/floatThead/#intro ).
Dokumente sagen, dass es mit Bootstrap 3-Tabellen funktioniert, und ich kann sagen, dass es auch mit Bootstrap 4-Tabellen mit oder ohne den auf Tabellen reagierenden Helfer funktioniert.
Die Verwendung des Plugins ist so einfach:
HTML (Vanilla Bootstrap Table Markup)
Plugin-Initialisierung:
Vollständiger Haftungsausschluss: Ich bin in keiner Weise mit dem Plugin verbunden. Ich fand es zufällig, nachdem ich stundenlang viele andere Lösungen ausprobiert hatte, die hier und anderswo veröffentlicht wurden.
quelle
Für was auch immer es jetzt wert ist: Ich habe eine Lösung für einen Schwester-Thread- Tabellen-Scroll mit HTML und CSS gepostet, der
visibility
nichtdisplay
) den Header der unteren Tabelle und mache die untere Tabelle scrollbar mit einem DivDie Lösung ist unabhängig von allen verwendeten Stilen / Frameworks - vielleicht ist sie auch hier nützlich ...
Eine lange Beschreibung finden Sie in der Tabellenführung mit HTML und CSS / der Code befindet sich auch in diesem Stift: https://codepen.io/sebredhh/pen/QmJvKy
quelle
Für Tabellen mit voller Höhe (die Seite scrollt, nicht die Tabelle)
Hinweis: Ich bewege das Ganze
<thead>...</thead>
Beause In meinem Fall hatte ich zwei Zeilen (Titel und Filter)Mit JS (jQuery)
CSS (nur zum Stylen)
quelle
Jetzt, da "alle" Browser ES6 unterstützen, habe ich die verschiedenen obigen Vorschläge in eine JavaScript-Klasse integriert, die eine Tabelle als Argument verwendet und den Text scrollbar macht. Damit kann die Layout-Engine des Browsers die Breite der Kopf- und Hauptzellen bestimmen und dann die Spaltenbreiten aufeinander abstimmen.
Die Höhe einer Tabelle kann explizit festgelegt oder so eingestellt werden, dass sie den verbleibenden Teil des Browserfensters ausfüllt, und bietet Rückrufe für Ereignisse wie das Ändern der Größe von Ansichtsfenstern und / oder das
details
Öffnen oder Schließen von Elementen.Die Unterstützung mehrzeiliger Header ist verfügbar und besonders effektiv, wenn die Tabelle die in den WCAC-Richtlinien angegebenen Attribute id / headers für die Barrierefreiheit verwendet ist keine so belastende Anforderung, wie es scheint.
Der Code hängt nicht von Bibliotheken ab, spielt aber gut mit ihnen, wenn sie verwendet werden. (Getestet auf Seiten, die JQuery verwenden).
Der Code und die Beispielverwendung sind auf Github verfügbar .
quelle
Sie können zwei Divs platzieren, wobei 1st Div (Header) eine transparente Bildlaufleiste und 2nd Div Daten mit sichtbarer / automatischer Bildlaufleiste enthält. Das Beispiel verfügt über ein Winkelcode-Snippet zum Durchlaufen der Daten.
Der folgende Code hat bei mir funktioniert -
Zusätzlicher Stil zum Ausblenden der Kopfzeilen-Bildlaufleiste -
quelle
Hier ist mein Kopierstift, wie man einen festen Tabellenkopf mit scrollbaren Zeilen und Spalten erstellt. Die Spalten haben auch eine feste Breite, http://codepen.io/abhilashn/pen/GraJyp
quelle
Sauberere Lösung (nur CSS)
quelle
Unterstützung für mehrere scrollbare Tabellen in einem einzigen Fenster.
Reines CSS & kein festes oder klebriges.
Ich suche seit Jahren nach festen Tabellenköpfen mit der automatischen Breite "td" und "th". Schließlich habe ich etwas codiert, es funktioniert gut für mich, aber ich bin nicht sicher, ob es für alle gut funktioniert.
Problem 1: Wir können keine Tabellen- oder Körperhöhe festlegen, während Tonnen von "tr" vorhanden sind. Dies liegt an den Standardtabelleneigenschaften.
Lösung: Legen Sie in der Tabelle eine Anzeigeeigenschaft fest.
Problem 2: Wenn wir eine Anzeigeeigenschaft festlegen, kann die Breite von "td" -Elementen nicht gleich der Breite von "th" -Elementen sein. Und es ist schwierig, Elemente in einer Tabelle mit voller Breite wie 100% richtig zu füllen.
Lösung: CSS "flex" ist eine sehr gute Lösung für Breiten- und Fülleinstellungen, daher werden wir unsere Körper- und Kopfelemente mit CSS "flex" erstellen.
jsfiddle
quelle
Verwendete diesen Link, stackoverflow.com/a/17380697/1725764 , von Hashem Qolami in den Kommentaren der Originalbeiträge und verwendete Anzeige: Inline-Blöcke anstelle von Floats. Korrigiert Rahmen, wenn die Tabelle auch die Klasse 'Tabellenrand' hat.
Dann addieren Sie einfach die Breiten von td und th
quelle
Ich habe eine irgendwie funktionierende CSS-Lösung mit verwendet
position: sticky
. Sollte auf immergrünen Browsern funktionieren. Versuchen Sie, die Größe des Browsers zu ändern. Habe immer noch ein Layoutproblem in FF, werde es später beheben, aber zumindest Tabellenüberschriften behandeln das vertikale und horizontale Scrollen. Codepen Beispielquelle
HTML
CSS
quelle
Ein einfacher Weg ohne feste Breite:
Quelle
Fügen Sie nun bei onLoad zum Anpassen der Breite das folgende Abfrageskript hinzu:
quelle
Legen Sie die Tabelle wie folgt in das div, um eine scrollbare Tabelle vertikal zu erstellen. Wechseln Sie
overflow-y
zuoverflow-x
, um die Tabelle horizontal scrollbar zu machen. Nuroverflow
um die Tabelle horizontal und vertikal scrollbar zu machen.quelle
quelle