Zacząłem używać tabeli md w moim projekcie i chcę mieć stałą szerokość kolumny. Obecnie wszystkie szerokości kolumn są podzielone na równe rozmiary.
Gdzie mogę uzyskać dokumentację wymiarów tabeli danych?
Zacząłem używać tabeli md w moim projekcie i chcę mieć stałą szerokość kolumny. Obecnie wszystkie szerokości kolumn są podzielone na równe rozmiary.
Gdzie mogę uzyskać dokumentację wymiarów tabeli danych?
Kiedy Material tworzy tabelę, automagicznie stosuje dwie nazwy klas, których możesz użyć do nadania stylu każdej kolumnie. W poniższym przykładzie style są nazwane mat-column-userId
i 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>
Teraz możesz używać tych nazw w css:
.mat-column-userId {
flex: 0 0 100px;
}
Podobna do odpowiedzi Rahula Patila , ale nie musisz dodawać kolejnej klasy do definicji kolumn.
.mat-header-cell
miałby pierwszeństwo. Alternatywnie możesz po prostu dodać kolejną regułę stylu dla komórki nagłówka.W tej chwili nie został jeszcze ujawniony na poziomie interfejsu API. Możesz to jednak osiągnąć za pomocą czegoś podobnego do tego
W css musisz dodać tę klasę niestandardową -
Możesz tu wprowadzić logikę, aby dołączyć klasę lub niestandardową szerokość. Zastosuje niestandardową szerokość kolumny.
Ponieważ używa md-table
flex
, musimy podać stałą szerokość w sposób elastyczny. To po prostu wyjaśnia -0 = nie rosnąć (skrót od flex-grow)
0 = nie kurczą się (skrót od flex-shrink)
75 pikseli = zacznij od 75 pikseli (skrót dla flex-base)
Plunkr tutaj - https://plnkr.co/edit/v7ww6DhJ6zCaPyQhPRE8?p=preview
źródło
Jeśli używasz w projekcie układu angular / flex-layout , możesz ustawić kolumnę za pomocą, dodając dyrektywę fxFlex do mat-header-cell i mat-cell:
W przeciwnym razie możesz dodać niestandardowy CSS, aby osiągnąć ten sam wynik:
źródło
Sprawdź to: https://github.com/angular/material2/issues/5808
Ponieważ materiał2 używa układu flex, możesz po prostu ustawić
fxFlex="40"
(lub żądaną wartość dla fxFlex) namd-cell
imd-header-cell
.źródło
fxFlex="40px"
jest to również możliweOdkryłem, że najlepiej dla mnie działa kombinacja odpowiedzi Jymdmana i Rahula Patila:
Ponadto, jeśli masz jedną „wiodącą” kolumnę, która zawsze powinna zajmować pewną ilość miejsca na różnych urządzeniach, uważam, że poniższe informacje są bardzo przydatne do dostosowania do dostępnej szerokości kontenera w bardziej responsywny sposób (zmusza to pozostałe kolumny do równomiernie wykorzystać pozostałą przestrzeń):
źródło
Dokumentacja materiału Angular używa
aby jego składnik tabeli zmienił szerokość kolumny. Ponownie userId będzie nazwą komórki.
źródło
Używam FlexLayout, aby zaktualizować szerokość kolumny zgodnie z mediami zapytań, które daje nam FlexLayout.
oznacza, że ta kolumna będzie domyślnie używać 30% szerokości wiersza, gdy spełnione jest kryterium gt-xs @mediaQuery, nowa szerokość będzie wynosić 15% i podobne zachowanie dla innych warunków
źródło
Właśnie użyłem:
Zastąp 4 pozycją nagłówka, dla którego chcesz dostosować szerokość.Przykłady w użytej dokumentacji :
Więc po prostu zmodyfikowałem to, aby uzyskać to, czego chciałem.
źródło
Możesz ustawić klasę .mat-cell na flex: 0 0 200px; zamiast flex: 1 wraz z n-tym dzieckiem.
źródło
Możesz to teraz zrobić w ten sposób
źródło
możesz użyć
fxFlex
from "@ angular / flex-layout" wth
itd
tak:źródło
.mat-column-skills { max-width: 40px; }
źródło
Możesz także użyć selektorów elementów:
mat-header-cell:nth-child(1), mat-cell:nth-child(1) { flex: 0 0 64px; }
Ale odpowiedź jymdmana jest w większości przypadków najbardziej zalecanym sposobem.
źródło
Przykładowa kolumna tabeli Mat i odpowiadający jej kod CSS:
HTML / szablon
CSS
źródło
Jeśli chcesz, możesz również dodać styl bezpośrednio w znaczniku:
źródło
Jeśli masz zbyt wiele kolumn tabeli i nie jest ona dostosowywana w tabeli kątowej za pomocą
md-table
, wklej następujący styl docomponent.css
pliku. Będzie działać jak urok z widokiem przewijania w poziomie.Dodaj ten styl, aby osobno zmienić kolumnę.
Ewentualnie sprawdzić ten link , (gdzie powyżej przyszedł kod z) , aby uzyskać więcej szczegółów.
źródło
Weźmy przykład. Jeśli Twoja tabela zawiera następujące kolumny:
Ponieważ zawiera dwie kolumny. wtedy możemy ustawić szerokość kolumn za pomocą
w tym przykładzie bierzemy
źródło
Mam na to bardzo proste rozwiązanie - ustawienie innej szerokości kolumny w arkuszu stylów przez nadpisanie komórki i komórki nagłówka:
Przykład - ustawienie niestandardowej szerokości dla pierwszej i piątej kolumny:
.mat-cell:nth-child(1), .mat-header-cell:nth-child(1) { flex: 0 0 5%; } .mat-cell:nth-child(5), .mat-header-cell:nth-child(5) { flex: 0 0 10%; }
github
źródło