Ich habe begonnen, die md-Tabelle für mein Projekt zu verwenden, und ich möchte eine feste Spaltenbreite. Derzeit sind alle Spaltenbreiten gleich groß.
Woher bekomme ich die Dokumentation der Datentabellenabmessungen?
Ich habe begonnen, die md-Tabelle für mein Projekt zu verwenden, und ich möchte eine feste Spaltenbreite. Derzeit sind alle Spaltenbreiten gleich groß.
Woher bekomme ich die Dokumentation der Datentabellenabmessungen?
Wenn Material die Tabelle erstellt, werden automatisch zwei Klassennamen für Sie angewendet, mit denen Sie jede Spalte formatieren können. Im folgenden Beispiel heißen die Stile mat-column-userId
und cdk-column-userId
.
<ng-container cdkColumnDef="userId">
<md-header-cell *cdkHeaderCellDef> ID </md-header-cell>
<md-cell *cdkCellDef="let row"> {{row.id}} </md-cell>
</ng-container>
Jetzt können Sie diese Namen in CSS verwenden:
.mat-column-userId {
flex: 0 0 100px;
}
Ähnlich wie bei Rahul Patils Antwort , aber Sie müssen Ihren Spaltendefinitionen keine weitere Klasse hinzufügen.
.mat-header-cell
Vorrang haben würde. Alternativ können Sie auch eine andere Stilregel für die Kopfzelle hinzufügen.Derzeit wurde es noch nicht auf API-Ebene verfügbar gemacht. Sie können dies jedoch mit etwas Ähnlichem erreichen
In CSS müssen Sie diese benutzerdefinierte Klasse hinzufügen -
Geben Sie hier die Logik zum Anhängen der Klasse oder der benutzerdefinierten Breite ein. Es wird eine benutzerdefinierte Breite für die Spalte angewendet.
Da md-table verwendet
flex
, müssen wir eine feste Breite in flexibler Weise angeben. Das erklärt einfach -0 = nicht wachsen (Abkürzung für Flex-Grow)
0 = nicht schrumpfen (Abkürzung für Flex-Shrink)
75px = Start bei 75px (Abkürzung für Flex-Basis)
Plunkr hier - https://plnkr.co/edit/v7ww6DhJ6zCaPyQhPRE8?p=preview
quelle
Wenn Sie in Ihrem Projekt das Winkel- / Flex-Layout verwenden , können Sie die Spalte mit festlegen, indem Sie der mat-header-cell und der mat-cell die Anweisung fxFlex hinzufügen :
Andernfalls können Sie benutzerdefiniertes CSS hinzufügen, um dasselbe Ergebnis zu erzielen:
quelle
Überprüfen Sie dies: https://github.com/angular/material2/issues/5808
Da material2 das Flex-Layout verwendet, können Sie einfach
fxFlex="40"
(oder den gewünschten Wert für fxFlex) aufmd-cell
und setzenmd-header-cell
.quelle
fxFlex="40px"
auch möglich istIch fand, dass eine Kombination der Antworten von Jymdman und Rahul Patil am besten für mich funktioniert:
Wenn Sie eine "führende" Spalte haben, die immer einen bestimmten Speicherplatz auf verschiedenen Geräten einnehmen soll, fand ich Folgendes sehr praktisch, um die verfügbare Containerbreite reaktionsschneller zu gestalten (dies zwingt die verbleibenden Spalten dazu Verwenden Sie den verbleibenden Platz gleichmäßig):
quelle
Die Angular-Materialdokumentation verwendet
für seine Tabellenkomponente, um die Spaltenbreite zu ändern. Auch hier wäre userId der Zellenname.
quelle
Ich verwende FlexLayout, um die Spaltenbreite entsprechend den von FlexLayout bereitgestellten Abfragemedien zu aktualisieren.
bedeutet, dass diese Spalte standardmäßig 30% der Zeilenbreite verwendet. Wenn gt-xs @mediaQuery erfüllt ist, beträgt die neue Breite 15% und ein ähnliches Verhalten für andere Bedingungen
quelle
Ich habe gerade verwendet:
Ersetzen Sie 4 durch die Position des Headers, für den Sie die Breite anpassen müssen. Die Beispiele in der verwendeten Dokumentation :
Also habe ich es einfach modifiziert, um das zu bekommen, was ich wollte.
quelle
Sie können die .mat-cell-Klasse auf flex setzen: 0 0 200px; statt flex: 1 zusammen mit dem n-ten Kind.
quelle
Sie können es jetzt so machen
quelle
Sie können
fxFlex
von "@ angle / flex-layout" inth
undtd
wie folgt verwenden:quelle
quelle
Sie können auch die Elementauswahl verwenden:
Aber Jymdmans Antwort ist in den meisten Fällen der am meisten empfohlene Weg.
quelle
Beispiel-Mat-Table-Spalte und entsprechendes CSS:
HTML / Vorlage
CSS
quelle
Ich habe die sehr einfache Lösung dafür gefunden: Festlegen einer unterschiedlichen Breite für die Spalte im Stylesheet durch Überschreiben der Zelle und der Kopfzelle:
Github
quelle
Sie können das Styling auch direkt im Markup hinzufügen, wenn Sie dies wünschen:
quelle
Wenn Sie zu viele Tabellenspalten haben und diese nicht in der Winkeltabelle mit angepasst werden
md-table
, fügen Sie den folgenden Stil in diecomponent.css
Datei ein. Es funktioniert wie ein Zauber mit horizontaler Bildlaufansicht.Fügen Sie diesen Stil hinzu, um Ihre Spalte separat zu ändern.
Alternativ überprüfen Sie diesen Link , (wo der Code oben kam) , für weitere Einzelheiten.
quelle
Nehmen wir ein Beispiel. Wenn Ihre Tabelle folgende Spalten enthält:
Da diese zwei Spalten enthalten. dann können wir die Breite der Spalten mit einstellen
Für dieses Beispiel nehmen wir
quelle