Почему я не могу применить границу к угловому ряду таблицы матов?
У меня есть простая угловая таблица материалов:
<table mat-table [dataSource]="scoreboardData">
<ng-container matColumnDef="name">
<th mat-header-cell *matHeaderCellDef> Name </th>
<td mat-cell *matCellDef="let element"> {{element.name}} </td>
</ng-container>
<ng-container matColumnDef="totalScore">
<th mat-header-cell *matHeaderCellDef> Total Score </th>
<td mat-cell *matCellDef="let element"> {{element.totalScore}}</td>
</ng-container>
<tr mat-header-row *matHeaderRowDef="displayedColumns"></tr>
<tr mat-row *matRowDef="let row; columns: displayedColumns;"></tr>
</table>
Я хотел бы добавить дополнительное поле между строками, а также границу и, возможно, даже некоторые отступы. Я обнаружил, что могу изменить цвет фона строк, но не могу применить поля, отступы или границы к строке.
tr.mat-row {
background: #2f5b98; /* Old browsers */
background: -moz-linear-gradient(top, rgba(74,144,239,1) 20%, rgba(0,0,0,1) 100%); /* FF3.6-15 */
background: -webkit-linear-gradient(top, rgba(74,144,239,1) 20%,rgba(0,0,0,1) 100%); /* Chrome10-25,Safari5.1-6 */
background: linear-gradient(to bottom, rgba(74,144,239,1) 20%,rgba(0,0,0,1) 100%); /* W3C, IE10+, FF16+, Chrome26+, Opera12+, Safari7+ */
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#4a90ef', endColorstr='#000000',GradientType=0 ); /* IE6-9 */
margin-top: 16px;
padding: 8px;
border: 1px solid #FAFF00;
}
Я уверен, что это что-то простое, но я не могу понять, что мешает мне применить эти стили к ряду. Опять же, я могу изменить фон, шрифт внутри него и несколько других стилей, но не эти три конкретных стиля (padding, margin, border).
РЕДАКТИРОВАТЬ: С тех пор я определил, что отступы и поля не допускаются ни в одной HTML-таблицы. Граница все еще ускользает от меня.
2 ответа
Ваши проблемы со стилизацией связаны не с таблицами Angular Material, а с таблицами HTML в целом. Если вы ищете, как оформить table
Например, добавьте границы в строки или поля, вы найдете различные ответы и предложения.
Если вам нужны рамка, отступы и отступы, вы можете сделать что-то вроде этого:
td.mat-cell {
/* row padding */
padding: 16px 0 16px 0;
/* row border */
border-bottom: 1px solid #FAFF00;
border-top: 1px solid #FAFF00;
}
td.mat-cell:first-child {
/* row border */
border-left: 1px solid #FAFF00;
}
td.mat-cell:last-child {
/* row border */
border-right: 1px solid #FAFF00;
}
table {
/* row spacing / margin */
border-spacing: 0 8px !important;
}
Если вам нужна только граница строки, но между строками не должно быть промежутка / поля:
table {
border-collapse: collapse;
}
tr.mat-row {
border: 1px solid #FAFF00;
}
td.mat-cell {
border: none;
}
Как видите, есть несколько способов. Я создал этот стек, где я использовал первый подход. https://stackblitz.com/edit/angular-cjxcgt-teiuyh
mat-footer-row, mat-header-row, mat-row {
border-bottom-width: 10px;
}
попробуйте этот код. Это будет работать:)
Самый простой и лучший способ - использовать силу угловатого материала. Используйте mat-table, mat-header-cell, mat-cell вместо table, th, td. В конце используйте mat-header row и mat-row вместо th и td. Затем вы можете ограничить каждую строку, как хотите.
Живой пример: Stackblitz