Ich brauche eine einfache Lösung. Ich weiß, dass es einigen anderen Fragen ähnlich ist, wie:
- HTML-Tabelle mit festen Überschriften und einer festen Spalte?
- Wie kann ich beim Scrollen die erste Zeile und die erste Spalte einer Tabelle sperren, möglicherweise mit JavaScript und CSS?
Aber ich brauche nur eine einzige linke Spalte, um eingefroren zu werden, und ich würde eine einfache und skriptlose Lösung bevorzugen.
html
css
html-table
agsamek
quelle
quelle
Antworten:
Wenn Sie eine Tabelle möchten, in der nur die Spalten horizontal gescrollt werden, können Sie
position: absolute
die erste Spalte (und deren Breite explizit angeben) und dann die gesamte Tabelle in eine Tabelle einschließenoverflow-x: scroll
Block einschließen. Versuchen Sie dies jedoch nicht in IE7 ...Relevantes HTML & CSS:
Geige
quelle
text-overflow: ellipsis
um sie sauber anzuzeigen.Dies ist ein interessantes jQuery-Plugin, das feste Header und / oder Spalten erstellt . Schalten Sie die feste Spalte auf der Demoseite so ein, dass sie wahr ist, um sie in Aktion zu sehen.
quelle
Sie können
sticky
Position verwenden. Hier ist ein Beispielcode. Dies ist eine HTML / CSS-Lösung. Es ist kein js erforderlich.Bootply-Code: https://www.bootply.com/g8pfBXOcY9
quelle
Bei einer linken Spalte mit fester Breite liefert Eamon Nerbonne die beste Lösung .
Bei einer linken Spalte mit variabler Breite besteht die beste Lösung darin, zwei identische Tabellen zu erstellen und übereinander zu schieben. Demo: http://jsfiddle.net/xG5QH/6/ .
quelle
seperate
unter Bootstap setzen, sonst schweben die Ränder nicht mit den Zellen. Danach ist ein wenig Randreinigung erforderlich.visibility: collapse;
zu den Spalten hinzugefügt , um sie vor der festen Tabelle zu verbergen (ich muss den:not()
CSS-Selektor lieben ! ). Ich habe auch jQuery für.clone()
die Tabelle verwendet, nachdem es von PHP + MySQL + Ajax generiert wurde, und es in ein bereinigtes Div eingefügt ...FWIW, hier ist eine Tabelle, die mit festem Kopf und fester Seite gescrollt werden kann.
http://codepen.io/ajkochanowicz/pen/KHdih
quelle
Ein bisschen spät, aber ich bin auf diesen Thread gestoßen, als ich selbst Lösungen ausprobiert habe. Angenommen, Sie verwenden heutzutage moderne Browser, habe ich eine Lösung mit CSS calc () entwickelt, um sicherzustellen, dass die Breiten eingehalten werden.
Hoffe das hilft jemandem!
quelle
<br/>
im<th>
Element?Gestalte die linke Spalte mit
position: fixed
. (Sie wollen vermutlich verwendentop
undleft
Stile zu steuern , wo genau kommt es.)quelle
position: fixed
und bleibt gesetzt, der Rest des Inhalts verhält sich normal (vermutlich mit einem linken Rand, damit die linke Spalte nicht überlappt).Für die meisten nach 2017 veröffentlichten Browser:
Sie können die verwenden
position: sticky
. Siehe https://caniuse.com/#feat=css-sticky .Es ist keine Spalte mit fester Breite erforderlich.
Führen Sie das folgende Code-Snippet aus, um zu sehen, wie es funktioniert.
quelle
sticky
, daher ist kein weiterer erforderlichposition: sticky
an seinem Verhalten, daher wurde die Verwendung bereits gezeigt.Ich nahm die Antwort von Earmon Nerbonne und bearbeitete sie, um mit Tabellen zu arbeiten, die die gesamte Breite ausfüllen.
http://jsfiddle.net/DYgD6/6/
Die Breite der festen Spalte muss jedoch noch ein festgelegter Wert sein.
quelle
Wenn Sie etwas Komplizierteres entwickeln und möchten, dass mehrere Spalten links fixiert werden, benötigen Sie wahrscheinlich so etwas.
quelle
Wenn Sie in der Hölle von Webdevelopper sind und diese Funktion für IE6 ausführen müssen, habe ich folgenden Beispielcode verwendet:
Dies funktioniert wahrscheinlich NUR für IE6. Verwenden Sie daher bedingte Kommentare für das CSS.
quelle
Sie müssen kein Plugin hinzufügen, CSS kann diesen Job erledigen !!!
Die Idee ist, die Position aller ersten Zellen in jeder Spalte absolut zu machen und die Breite fest zu machen. Ex:
Dadurch werden einige Teile einiger Spalten unter der ersten Spalte ausgeblendet. Fügen Sie daher eine leere zweite Spalte (zweite leere td hinzufügen) mit der gleichen Breite wie die erste Spalte hinzu.
Ich habe getestet und dies funktioniert in Chrome und Firefox.
quelle
Eamon Nerbonne, ich habe einige CSS in Ihrem Code geändert und es ist jetzt besser (die Bildlaufleiste beginnt in der ersten Zeile)
http://jsfiddle.net/At8L8/
Ich füge nur zwei Zeilen hinzu:
quelle
Sie können einfach die erste Spalte erstellen
position: sticky; z-index: 9
. Dadurch bleibt die Spalte / Zeile an ihrer aktuellen Position. Testen Sie hier meinen Beispielcodepen https://codepen.io/swastikmishra/pen/zYYdKBQHTML-Beispiel
quelle
Opera war fehlerhaft für alle vorherigen Antworten, als ich sie auf meinem Mac testete. Wenn Sie durch die Tabelle scrollen, verschwindet die feste Spalte, nachdem Sie die erste nicht fixierte Spalte übergeben haben. Ich ging voran und schrieb den Code unten. Es funktioniert in allen Browsern, die ich lokal installiert habe. Ich weiß allerdings nicht, wie ich damit umgehen soll.
Denken Sie daran, dass Sie diesen Code möglicherweise anpassen müssen, wenn Sie Zeilen in einer Tabelle und nicht in der anderen überspringen oder die Höhe der Zeilen ändern möchten.
quelle
Hier ist eine weitere Modifikation der beliebtesten Antwort, jedoch mit Behandlung der variablen Textlänge in den Beschriftungen der ersten Spalte: http://jsfiddle.net/ozx56n41/
Grundsätzlich verwende ich die zweite Spalte zum Erstellen der Zeilenhöhe, wie bereits erwähnt. Aber meine Geige funktioniert tatsächlich anders als die meisten oben genannten.
HTML:
CSS:
quelle
Für mich war dies die einzige, die perfekt funktionierte (danke an Paul O'Brien!): Https://codepen.io/paulobrien/pen/gWoVzN
Hier ist der Ausschnitt:
quelle
Alternativ können Sie den Körper mit einer vorgegebenen Größe (
height:20em
z. B. via ) stylen und verwendenoverflow-y:scroll;
Dann können Sie einen riesigen Körper haben, der unabhängig vom Rest der Seite scrollt.
quelle
quelle
Dies kann einfach mit Hilfe von Datentabellen erfolgen. Personen, die mit Datentabellen noch nicht vertraut sind, finden Sie unter https://datatables.net/. Es ist ein Plugin und bietet viele Funktionen. Im angegebenen Code ist die Kopfzeile festgelegt, die ersten drei Spalten sind festgelegt und einige andere Funktionen sind festgelegt auch dort.
quelle
Ich habe nicht jede Antwort auf diese Frage überprüft, aber nachdem ich die meisten analysiert hatte, stellte ich fest, dass das Design bei mehrzeiligen Daten in Zellen oder im Kopf fehlschlägt. Ich habe Javascript verwendet, um dies zu lösen. Ich hoffe jemand findet das hilfreich.
https://codepen.io/kushagrarora/pen/zeYaoY
Hinweis: Das "Container" -Div soll nur zeigen, dass Code mit der mobilen Ansicht kompatibel ist.
quelle
Ich habe gerade die am weitesten rechts liegende klebrige Spalte eines Tisches klebrig gemacht.
Ich glaube, wenn Sie das tun
{position: sticky; left: 0;}
, werden Sie das gewünschte Ergebnis erzielen.quelle
sticky
nicht vom IE unterstützt.Wenn Sie Ihren aktuellen Tisch nicht zu sehr berühren möchten, können Sie eine gefälschte angeheftete Spalte vor dem Tisch erstellen.
Das Beispiel zeigt eine Möglichkeit, dies ohne JS zu tun
quelle
In HTML5 können Sie CSS verwenden
style.transform
.Ich empfehle jedoch, dass Sie "zwischen Seiten wischen" deaktivieren, wenn Sie auf einem Mac implementieren.
Schauen Sie sich den BeispielcodePen an
quelle
Fügen Sie dies im Kopf hinzu:
Javascript:
quelle