I have a simple angular material table:
<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>
I would like to add some extra margin between the rows as well as a border and maybe even some padding. I have found that I am able to change the background color of the rows, but I'm not able to apply margins, padding or borders to the row.
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;
}
I'm sure it's something simple, but I can't figure out what is preventing me from applying these styles to the row. Again, I can change the background, the font within it and several other styles, just not these three particular styles (padding, margin, border).
EDIT: I have since determined that padding and margin are not allowed on any html tables. Border still eludes me though.
The simplest and better way is to utilize the power of angular material. Use mat-table, mat-header-cell, mat-cell instead of table, th, td. At the end use mat-header row and mat-row instead of th and td. Then you can border each row as you want.
Live Example: Stackblitz
Your styling problems don't have to do with Angular Material tables but with HTML tables in general. If you search for how to style a
table
e.g. add borders to rows or margins you'll find various answers and suggestions.You basically can't add
margin
orpadding
to a table row<tr>
directly.Solutions
How you set a
border
for table rows and specify amargin
andpadding
depends on the border model (collapse
orseparate
) you use.The separated borders model:
border-collapse: seperate
1. Solution: If you want a border, margin and padding you could do something like this:
https://stackblitz.com/edit/angular-cjxcgt-wtkfg4
The collapsing border model:
border-collapse: collapse
2. Solution: If you only want a row border and padding but no spacing / margin between the rows you could do:
https://stackblitz.com/edit/angular-cjxcgt-xphbue
try this code. This will work :)