Comencé a usar la tabla md para mi proyecto y quiero un ancho de columna fijo. Actualmente, el ancho de todas las columnas se divide en tamaños iguales.
¿Dónde puedo obtener la documentación de las dimensiones de la tabla de datos?
Comencé a usar la tabla md para mi proyecto y quiero un ancho de columna fijo. Actualmente, el ancho de todas las columnas se divide en tamaños iguales.
¿Dónde puedo obtener la documentación de las dimensiones de la tabla de datos?
Cuando Material crea la tabla, automáticamente le aplica dos nombres de clase que puede usar para diseñar cada columna. En el ejemplo siguiente, los estilos se denominan mat-column-userId
y 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>
Ahora puede usar esos nombres en css:
.mat-column-userId {
flex: 0 0 100px;
}
Similar a la respuesta de Rahul Patil , pero no necesita agregar otra clase a las definiciones de sus columnas.
.mat-header-cell
tendría prioridad. Alternativamente, puede agregar otra regla de estilo para la celda del encabezado.En este momento, aún no se ha expuesto a nivel de API. Sin embargo, puedes lograrlo usando algo similar a esto.
En CSS, debe agregar esta clase personalizada:
Siéntase libre de ingresar la lógica para agregar clase o ancho personalizado aquí. Aplicará un ancho personalizado para la columna.
Dado que se usa md-table
flex
, necesitamos dar un ancho fijo de manera flexible. Esto simplemente explica:0 = no crecer (abreviatura de flex-grow)
0 = no encoger (abreviatura de flex-shrink)
75px = comenzar en 75px (abreviatura de base flexible)
Plunkr aquí: https://plnkr.co/edit/v7ww6DhJ6zCaPyQhPRE8?p=preview
fuente
Si está utilizando angular / flex-layout en su proyecto, puede configurar la columna agregando la directiva fxFlex a mat-header-cell y mat-cell:
De lo contrario, puede agregar CSS personalizado para lograr el mismo resultado:
fuente
Verifique esto: https://github.com/angular/material2/issues/5808
Dado que material2 utiliza un diseño flexible, puede establecer
fxFlex="40"
(o el valor que desee para fxFlex) enmd-cell
ymd-header-cell
.fuente
fxFlex="40px"
también es posibleEncontré que una combinación de las respuestas de jymdman y Rahul Patil funciona mejor para mí:
Además, si tiene una columna "principal" que desea ocupar siempre una cierta cantidad de espacio en diferentes dispositivos, encontré lo siguiente bastante útil para adoptar el ancho del contenedor disponible en un tipo más receptivo (esto obliga a las columnas restantes a use el espacio restante de manera uniforme):
fuente
La documentación de material angular utiliza
para que su componente de tabla cambie el ancho de la columna. Nuevamente, userId sería el nombre de las celdas.
fuente
Estoy usando FlexLayout para actualizar el ancho de la columna de acuerdo con los medios de consulta que nos brinda FlexLayout.
significa que esta columna usará el 30% del ancho de la fila por defecto, cuando se cumpla gt-xs @mediaQuery, el nuevo ancho será del 15% y un comportamiento similar para otras condiciones
fuente
Acabo de usar:
Reemplaza 4 con la posición del encabezado para el que necesitas ajustar el ancho. Los ejemplos en la documentación utilizados:
Así que lo modifiqué para obtener lo que quería.
fuente
Puede configurar la clase .mat-cell en flex: 0 0 200px; en lugar de flex: 1 junto con nth-child.
fuente
Ahora puedes hacerlo así
fuente
puede usar
fxFlex
desde "@ angular / flex-layout"th
ytd
así:fuente
.mat-column-skills { max-width: 40px; }
fuente
También puede utilizar los selectores de elementos:
mat-header-cell:nth-child(1), mat-cell:nth-child(1) { flex: 0 0 64px; }
Pero la respuesta de jymdman es el camino más recomendado en la mayoría de los casos.
fuente
Ejemplo de columna de tabla de Mat y CSS correspondiente:
HTML / Plantilla
CSS
fuente
También puede agregar el estilo directamente en el marcado si lo desea:
fuente
Si tiene demasiadas columnas de tabla y no se ajusta en la tabla angular usando
md-table
, pegue el siguiente estilo en elcomponent.css
archivo. Funcionará como un encanto con la vista de desplazamiento horizontalmente.Agregue este estilo para modificar su columna por separado.
Alternativamente, consulte este enlace , (de donde proviene el código anterior) , para obtener más detalles.
fuente
Pongamos un ejemplo. Si su tabla tiene las siguientes columnas:
Como esto contiene dos columnas. entonces podemos establecer el ancho de las columnas usando
para este ejemplo, tomamos
fuente
Obtuve la solución muy fácil para esto: establecer un ancho diferente para la columna en la hoja de estilo anulando la celda y la celda del encabezado:
Ejemplo: configuración de ancho personalizado para la primera y la quinta columna:
.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
fuente