Comecei a usar a md-table para meu projeto e quero uma largura de coluna fixa. Atualmente todas as larguras das colunas são divididas em tamanhos iguais.
Onde posso obter a documentação das dimensões da tabela de dados?
Comecei a usar a md-table para meu projeto e quero uma largura de coluna fixa. Atualmente todas as larguras das colunas são divididas em tamanhos iguais.
Onde posso obter a documentação das dimensões da tabela de dados?
Quando o Material cria a tabela, ele automaticamente aplica dois nomes de classe para você, que você pode usar para definir o estilo de cada coluna. No exemplo abaixo, os estilos são nomeados mat-column-userId
e 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>
Agora você pode usar esses nomes em css:
.mat-column-userId {
flex: 0 0 100px;
}
Semelhante à resposta de Rahul Patil , mas você não precisa adicionar outra classe às suas definições de coluna.
.mat-header-cell
teria precedência. Como alternativa, você pode simplesmente adicionar outra regra de estilo para a célula de cabeçalho.No momento, ele ainda não foi exposto no nível da API. No entanto, você pode conseguir isso usando algo semelhante a este
No css, você precisa adicionar esta classe personalizada -
Sinta-se à vontade para inserir a lógica para anexar classe ou largura personalizada aqui. Isso aplicará largura personalizada para a coluna.
Como o md-table usa
flex
, precisamos fornecer largura fixa de maneira flexível. Isso simplesmente explica -0 = não cresce (abreviação de flex-grow)
0 = não encolher (abreviação de flex-encolher)
75px = começa em 75px (abreviação de flex-basis)
Plunkr aqui - https://plnkr.co/edit/v7ww6DhJ6zCaPyQhPRE8?p=preview
fonte
Se você estiver usando layout angular / flex em seu projeto, você pode definir a coluna adicionando diretiva fxFlex a mat-header-cell e mat-cell:
Caso contrário, você pode adicionar CSS personalizado para obter o mesmo resultado:
fonte
Verifique isto: https://github.com/angular/material2/issues/5808
Como o material2 está usando o layout flexível, você pode apenas definir
fxFlex="40"
(ou o valor que deseja para fxFlex) comomd-cell
emd-header-cell
.fonte
fxFlex="40px"
também é possívelDescobri que uma combinação das respostas de jymdman e Rahul Patil funciona melhor para mim:
Além disso, se você tem uma coluna "à esquerda" que deseja sempre ocupar uma certa quantidade de espaço em diferentes dispositivos, achei o seguinte bastante útil para adotar a largura do contêiner disponível em um tipo mais responsivo (isso força as colunas restantes a use o espaço restante uniformemente):
fonte
A documentação do material Angular usa
para seu componente de tabela para alterar a largura da coluna. Novamente, userId seria o nome das células.
fonte
Estou usando o FlexLayout para atualizar a largura da coluna de acordo com a mídia de consulta que o FlexLayout nos fornece.
significa que esta coluna usará 30% da largura da linha por padrão, quando gt-xs @mediaQuery for encontrado, a nova largura será de 15% e comportamento semelhante para outras condições
fonte
Acabei de usar:
Substitua 4 pela posição do cabeçalho para a qual você precisa ajustar a largura. Os exemplos na documentação usados:
Então, eu apenas modifiquei para conseguir o que queria.
fonte
Você pode definir a classe .mat-cell para flex: 0 0 200px; em vez de flex: 1 junto com o enésimo filho.
fonte
Agora você pode fazer assim
fonte
você pode usar
fxFlex
"@ angular / flex-layout" emth
etd
assim:fonte
.mat-column-skills { max-width: 40px; }
fonte
Você também pode usar os seletores de elemento:
mat-header-cell:nth-child(1), mat-cell:nth-child(1) { flex: 0 0 64px; }
Mas a resposta de jymdman é o caminho mais recomendado na maioria dos casos.
fonte
Amostra de coluna Mat-table e CSS correspondente:
HTML / modelo
CSS
fonte
Você também pode adicionar o estilo diretamente na marcação, se desejar:
fonte
Se você tiver muitas colunas de tabela e não forem ajustadas na tabela angular usando
md-table
, cole o seguinte estilo nocomponent.css
arquivo. Ele funcionará perfeitamente com a visualização de rolagem horizontal.Adicione este estilo para alterar sua coluna separadamente.
Verificar alternativamente esta ligação , (onde o código acima veio) , para mais detalhes.
fonte
Vamos dar um exemplo. Se a sua tabela tiver as seguintes colunas:
Como este contém duas colunas. então podemos definir a largura das colunas usando
para este exemplo, pegamos
fonte
Eu obtive a solução muito fácil para isso - definir larguras diferentes para a coluna na folha de estilo substituindo a célula e a célula do cabeçalho:
Exemplo - configuração de largura personalizada para a 1ª e 5ª coluna:
.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
fonte