jobs920.com

  

Beste Artikel:

  
Main / Behoben, wie Headertabellenmaster geändert werden

Problem beim Ändern des Header-Tabellen-Masters behoben

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie, Datenschutzrichtlinie und unsere Nutzungsbedingungen gelesen und verstanden haben. Denken Sie an den Effekt "Fenster einfrieren" in Microsoft Excel. Ich möchte in der Lage sein, durch den Inhalt der Tabelle zu scrollen, aber immer die Spaltenüberschriften oben sehen zu können. Ich habe eine Weile nach einer Lösung dafür gesucht und festgestellt, dass die meisten Antworten nicht funktionieren oder nicht für meine Situation geeignet sind. Deshalb habe ich mit jQuery eine einfache Lösung geschrieben.

Diese Lösung funktioniert in Chrome und IE. Da es auf jQuery basiert, sollte dies auch in anderen von jQuery unterstützten Browsern funktionieren. Wenn Sie sich nur für moderne Browser interessieren, kann ein fester Header durch die Verwendung von CSS-Transformationen viel einfacher erreicht werden.

Klingt seltsam, funktioniert aber großartig: Ich habe gerade die Zusammenstellung eines jQuery-Plugins abgeschlossen, das eine gültige Einzeltabelle mit gültigem HTML verwendet. Es muss einen Thead und Tbody enthalten und eine Tabelle mit festen Kopfzeilen, einer optionalen festen Fußzeile, die entweder eine geklonte Kopfzeile oder ein beliebiger Inhalt sein kann, ausgeben wählte Paginierung usw.

Wenn Sie größere Monitore nutzen möchten, wird die Größe der Tabelle auch geändert, wenn die Größe des Browsers geändert wird. Eine weitere zusätzliche Funktion ist das seitliche Scrollen, wenn nicht alle Tabellenspalten in die Ansicht passen. Es ist extrem einfach einzurichten und Sie können Ihre eigenen benutzerdefinierten Stile dafür erstellen. Außerdem werden in allen Browsern abgerundete Ecken verwendet.

Denken Sie daran, dass ich es gerade veröffentlicht habe, es ist also technisch immer noch Beta und es gibt nur sehr wenige kleinere Probleme, die ich ausbügele. Ich habe auch ein Plugin erstellt, das dieses Problem behebt. Mein Projekt - jQuery. Es erfordert keine externen Stile und erwartet nicht, dass Ihre Tabelle auf eine bestimmte Weise gestaltet wird. Viele, nicht alle Antworten hier sind schnelle Hacks, die möglicherweise das Problem einer Person gelöst haben, aber nicht für jeden Tisch funktionieren.

Wenn Sie auf moderne Browser abzielen und keine extravaganten Styling-Anforderungen haben: Obwohl die Big-Four-Version auch ziemlich süß ist, handhabt diese Version die Flüssigkeitsbreite viel besser.

Die leicht hackige Implementierung, die ich mir ausgedacht habe, ist hier zu finden: Einfach ausgedrückt, Sie haben einen Tabellenkopf, den Sie visuell ausblenden, indem Sie ihn 0px hoch machen. Er enthält auch Divs, die als fester Header verwendet werden. Der Container der Tabelle lässt oben genügend Platz, um die absolut positionierte Kopfzeile zu berücksichtigen, und die Tabelle mit den Bildlaufleisten wird wie erwartet angezeigt. Der obige Code verwendet die positionierte Klasse, um die Tabelle absolut zu positionieren. Ich verwende sie in einem Popup-Dialogfeld. Sie können sie jedoch auch im Dokumentfluss verwenden, indem Sie die positionierte Klasse aus dem Container entfernen.

Es ist nicht perfekt. Firefox weigert sich, die Kopfzeile auf 0px zu bringen, zumindest habe ich keinen Weg gefunden, aber ich halte sie hartnäckig auf mindestens 4px ... Es ist kein großes Problem, aber abhängig von Ihrem Stil wird es mit Ihren Rändern usw. durcheinander kommen. Die Tabelle wird auch verwendet Ein Faux-Column-Ansatz, bei dem die Hintergrundfarbe des Containers selbst als Hintergrund für die transparenten Header-Divs verwendet wird.

Alles in allem kann es je nach Ihren Anforderungen zu Stylingproblemen kommen, insbesondere bei Rahmen oder komplizierten Hintergründen.

Es könnte auch Probleme mit der Berechenbarkeit geben. Ich habe es noch nicht in einer Vielzahl von Browsern überprüft. Bitte kommentieren Sie Ihre Erfahrungen, wenn Sie es ausprobieren, aber ich habe so etwas nicht gefunden, daher dachte ich, dass es sich trotzdem lohnt, es zu veröffentlichen. Alle Versuche, dies von außerhalb der CSS-Spezifikation zu lösen, sind blasse Schatten dessen, was wir wirklich wollen: In einer perfekten Welt gäbe es eine reine CSS-Lösung für dieses Problem. Leider scheint es keinen guten zu geben.

Firefox Versandposition: Jeder gewinnt! Hier ist ein jQuery-Plugin für feste Tabellenüberschriften. Dadurch kann die gesamte Seite gescrollt werden, wodurch die Kopfzeile eingefroren wird, wenn sie oben angekommen ist. Es funktioniert gut mit Twitter Bootstrap-Tabellen. GitHub-Repository: Es werden nicht nur Tabelleninhalte gescrollt.

Schauen Sie sich dazu andere Tools an, als eine dieser anderen Antworten. Sie entscheiden, was am besten zu Ihrem Fall passt. Die meisten der hier veröffentlichten Lösungen erfordern jQuery. Wenn Sie nach einer Framework-unabhängigen Lösung suchen, versuchen Sie es mit Grid: Es wird hier auf Github gehostet: Es unterstützt nicht nur feste Kopfzeilen, sondern unter anderem auch feste linke Spalten und Fußzeilen.

Allen reinen CSS-Lösungen, die ich bisher gesehen habe - so klug sie auch sein mögen - fehlt ein gewisses Maß an Politur oder sie funktionieren in manchen Situationen einfach nicht richtig. Also habe ich beschlossen, meine eigenen zu erstellen ... Flüssigkeitsbreite und -höhe passen sich der Bildschirmgröße an: Automatische Breite, feste Höhe, einfacher in andere Inhalte zu integrieren: Verdana, Tahoma, serifenlos; Schriftgröße: Die Methode, mit der ich die Kopfzeile eingefroren habe, ähnelt der von d-Pixie. Eine Erklärung finden Sie in seinem Beitrag.

Es gab eine Reihe von Fehlern und Einschränkungen bei dieser Technik, die nur mit Haufen zusätzlichen CSS und ein oder zwei zusätzlichen Div-Containern behoben werden konnten. Dies ist eine Variation von Mahes 'Lösung. Die Position der CSS-Eigenschaft: Für Firefox musste ich die Mindesthöhe hinzufügen: Ich vergesse genau, warum dies benötigt wurde. Leider scheint die Microsoft Edge-Implementierung nur teilweise zu funktionieren.

Zumindest hatte ich bei meinen Tests einige flackernde und falsch ausgerichtete Tabellenzellen. Der Tisch war noch verwendbar, hatte aber erhebliche ästhetische Probleme. Ich habe Nathans Funktion erweitert, um auch eine feste Fußzeile und maximale Höhe zu unterstützen.

Außerdem legt die Funktion das CSS selbst fest, und Sie müssen nur eine Breite unterstützen. Zwei Divs, einer für Header, einer für Daten. Machen Sie das Daten-Div scrollbar und stellen Sie mit JavaScript die Breite der Spalten in der Kopfzeile so ein, dass sie mit den Breiten in den Daten übereinstimmt.

Ich denke, die Breite der Datenspalten muss fest und nicht dynamisch sein. Mir ist klar, dass die Frage JavaScript zulässt, aber hier ist eine reine CSS-Lösung, die ich ausgearbeitet habe und die es auch ermöglicht, die Tabelle horizontal zu erweitern. Ein Link zu jsFiddle befindet sich unten. Das hat funktioniert. Mein JavaScript-Code sieht folgendermaßen aus: Dann habe ich herausgefunden, was ich oben geschrieben habe. Es ist eine sehr schöne und einfache Lösung.

Aber alles in allem eine gute Lösung. Mine ist ein sehr leichtes jQuery-Plugin, das feste Kopf- und Fußzeilen, Spaltenspannen, Größenänderung, horizontales Scrollen und eine optionale Anzahl von Zeilen unterstützt, die angezeigt werden sollen, bevor das Scrollen beginnt.

Wenn Sie das jQuery-Plugin von StickyTableHeaders auf die Tabelle anwenden, bleiben die Spaltenüberschriften beim Scrollen am oberen Rand des Ansichtsfensters erhalten. Copyright c 2011 von Jonas Mosbech - https: Arial, Helvetica, serifenlos; Schriftgröße: FFF; Hintergrundfarbe: Ich mag die Antwort von Maximillian Hils, aber ich hatte einige Probleme: Um das Flimmern zu beseitigen, warte ich mit einer Zeitüberschreitung, bis der Benutzer mit dem Scrollen fertig ist, und wende dann die Transformation an, sodass die Kopfzeile beim Scrollen nicht sichtbar ist.

Ich habe dies auch mit jQuery geschrieben. Ein Vorteil davon ist, dass jQuery Herstellerpräfixe für Sie verarbeiten sollte. Ich habe den Rahmenkollaps so eingestellt, dass er getrennt wird, da sonst während der Übersetzung Rahmen verloren gehen, und ich entferne den Rand in der Tabelle, um zu verhindern, dass Inhalte direkt über der Zelle angezeigt werden, in der sich der Rahmen während des Bildlaufs befand. Ich mache den Hintergrund weiß, um die Zellen darunter zu bedecken, und füge einen Rand hinzu, der mit dem Tabellenrand übereinstimmt - der mit Bootstrap gestaltet und aus der Ansicht gescrollt wird.

Dies ist keine exakte Lösung für die feste Kopfzeile, aber ich habe eine ziemlich ausgeklügelte Methode entwickelt, um die Kopfzeile in der langen Tabelle zu wiederholen und dennoch die Sortierfähigkeit beizubehalten. Diese nette kleine Option erfordert das jQuery-Tablesorter-Plugin. So funktioniert das:. Offensichtlich hat meine Tabelle viel mehr Zeilen als diese. Die sich wiederholende Kopfzeile wird durch folgende Funktion eingerichtet: Viele Leute scheinen nach dieser Antwort zu suchen.

Ich fand es in einer Antwort auf eine andere Frage begraben: Synchronisieren der Spaltenbreite zwischen Tabellen in zwei verschiedenen Frames usw. Von den Dutzenden von Methoden, die ich ausprobiert habe, ist dies die einzige Methode, die ich gefunden habe und die zuverlässig funktioniert, damit Sie einen Bildlauf durchführen können untere Tabelle mit der Header-Tabelle mit den gleichen Breiten.

So habe ich es gemacht: Zuerst habe ich die obige jsfiddle verbessert, um diese Funktion zu erstellen, die sowohl für td als auch für th funktioniert, falls andere ausgelöst werden, die th für die Gestaltung ihrer Kopfzeilen verwenden. Als Nächstes müssen Sie zwei Tabellen erstellen. HINWEIS: Die Headertabelle sollte über einen zusätzlichen TD verfügen, damit in der oberen Tabelle Platz für die Bildlaufleiste bleibt. Zum Beispiel habe ich das jQuery Stickytables-Plugin ausprobiert, das nicht mit Durandal funktioniert, und das Google Code-Projekt hier https: Andere Lösungen, bei denen die Tabellen geklont werden, eine schlechte Leistung aufweisen oder saugen und nicht in allen Fällen funktionieren.

Diese übermäßig komplexen Lösungen sind nicht erforderlich. Erstellen Sie einfach zwei Tabellen wie in den folgenden Beispielen und rufen Sie die hier beschriebene Funktion setHeaderTableWidth auf. Wenn dies bei Ihnen nicht funktioniert, haben Sie wahrscheinlich mit Ihrer CSS-Box-Sizing-Eigenschaft gespielt und müssen sie korrekt einstellen. Es ist leicht, Ihren CSS-Inhalt versehentlich zu vermasseln.

(с) 2019 jobs920.com