使用 border-collapse: separate 在网格中的行上添加边框
Add border on row in grid with border-collapse: separate
我开发了一个数据网格。我打算让那个网格上的行是分开的,所以我使用了 border-collapse: separate.
我的问题是使用这个我无法给线条添加边框。
有没有办法为行添加边框并保持 table 行分开?
<dx-data-grid style="margin-top:50px" class="tableTask" [dataSource]="datas"
[showColumnLines]="false" [showRowLines]="false" [columnAutoWidth]="true" [allowColumnResizing]="true">
<dxo-header-filter [visible]="true"></dxo-header-filter>
<dxi-column dataField="ID" dataType="text" caption="ID"></dxi-column>
<dxi-column dataField="Name" dataType="text" caption="Name"></dxi-column>
</dx-data-grid>
css
::ng-deep .tableTask .dx-datagrid-headers {
letter-spacing: 0;
color: #4D4F5C !important;
font-weight: bold !important;
font-size: 13px !important;
background-color:#EDF3F9;
-ms-touch-action: pinch-zoom;
touch-action: pinch-zoom;
border-radius: 8px 8px 0px 0px;
height: 60px;
line-height: 18px;
border-bottom: none !important;
}
::ng-deep .tableTask .dx-datagrid-rowsview .dx-row {
border-top: 1px solid transparent;
border-bottom: 1px solid transparent;
background: #FFFFFF 0% 0% no-repeat padding-box;
box-shadow: 0px 3px 20px #BCBCCB47;
border-radius: 8px;
opacity: 1;
}
::ng-deep .tableTask .dx-datagrid-rowsview .dx-row {
line-height: 50px;
height: 60px;
}
::ng-deep .tableTask .dx-datagrid-headers + .dx-datagrid-rowsview {
border-top: 0 !important;
}
::ng-deep .tableTask .dx-datagrid-content .dx-datagrid-table {
border-collapse: separate !important;
border-spacing: 0px 16px !important;
}
::ng-deep .tableTask .dx-datagrid-headers .dx-datagrid-table .dx-row > td {
border-bottom: none;
}
这很难,因为你不能给 table 的 tr
添加边框。
您可以尝试使用伪元素 :after
为 table 行呈现一行,但现在的问题是:
The effect of 'position:relative' on table-row-group,
table-header-group, table-footer-group, table-row, table-column-group,
table-column, table-cell, and table-caption elements is undefined.
所以您可以尝试 "hack" 将 transform: scale(1);
添加到您的行中以使其工作。像这样:
table {border-collapse:separate;border-spacing: 10px;}
td {}
tr {position:relative;transform: scale(1);}
tr:after {
content:'';
display:block;
width:100%;
height:1px;
background-color:#000;
position:absolute;
bottom:0;
left:0;
}
<table>
<tr>
<td>dasdasd</td>
<td>dasda</td>
<td>asdasda</td>
</tr>
<tr>
<td>dasdasd</td>
<td>dasda</td>
<td>asdasda</td>
</tr> <tr>
<td>dasdasd</td>
<td>dasda</td>
<td>asdasda</td>
</tr>
</table>
但是,我绝不会推荐在任何网络上使用 css 黑客。
如果您想继续使用 border-collapse: separate
。
您只需将 border 添加到每个 row 的每个 td 即可:
::ng-deep .tableTask .dx-datagrid-rowsview .dx-row td {
border-bottom: 1px solid red;
}
在 CSS.
末尾添加上面的代码
如果你想给你的行添加一个完整的边框,你可以使用这个:
::ng-deep .tableTask .dx-datagrid-rowsview .dx-row td{
border-bottom: 1px solid red;
border-top: 1px solid red;
}
::ng-deep .tableTask .dx-datagrid-rowsview .dx-row td:first-child {
border-left: 1px solid red !important;
}
::ng-deep .tableTask .dx-datagrid-rowsview .dx-row td:last-child {
border-right: 1px solid red;
}
我已将 !important
添加到 border-left 因为已经有一些 CSS.
我开发了一个数据网格。我打算让那个网格上的行是分开的,所以我使用了 border-collapse: separate.
我的问题是使用这个我无法给线条添加边框。
有没有办法为行添加边框并保持 table 行分开?
<dx-data-grid style="margin-top:50px" class="tableTask" [dataSource]="datas"
[showColumnLines]="false" [showRowLines]="false" [columnAutoWidth]="true" [allowColumnResizing]="true">
<dxo-header-filter [visible]="true"></dxo-header-filter>
<dxi-column dataField="ID" dataType="text" caption="ID"></dxi-column>
<dxi-column dataField="Name" dataType="text" caption="Name"></dxi-column>
</dx-data-grid>
css
::ng-deep .tableTask .dx-datagrid-headers {
letter-spacing: 0;
color: #4D4F5C !important;
font-weight: bold !important;
font-size: 13px !important;
background-color:#EDF3F9;
-ms-touch-action: pinch-zoom;
touch-action: pinch-zoom;
border-radius: 8px 8px 0px 0px;
height: 60px;
line-height: 18px;
border-bottom: none !important;
}
::ng-deep .tableTask .dx-datagrid-rowsview .dx-row {
border-top: 1px solid transparent;
border-bottom: 1px solid transparent;
background: #FFFFFF 0% 0% no-repeat padding-box;
box-shadow: 0px 3px 20px #BCBCCB47;
border-radius: 8px;
opacity: 1;
}
::ng-deep .tableTask .dx-datagrid-rowsview .dx-row {
line-height: 50px;
height: 60px;
}
::ng-deep .tableTask .dx-datagrid-headers + .dx-datagrid-rowsview {
border-top: 0 !important;
}
::ng-deep .tableTask .dx-datagrid-content .dx-datagrid-table {
border-collapse: separate !important;
border-spacing: 0px 16px !important;
}
::ng-deep .tableTask .dx-datagrid-headers .dx-datagrid-table .dx-row > td {
border-bottom: none;
}
这很难,因为你不能给 table 的 tr
添加边框。
您可以尝试使用伪元素 :after
为 table 行呈现一行,但现在的问题是:
The effect of 'position:relative' on table-row-group, table-header-group, table-footer-group, table-row, table-column-group, table-column, table-cell, and table-caption elements is undefined.
所以您可以尝试 "hack" 将 transform: scale(1);
添加到您的行中以使其工作。像这样:
table {border-collapse:separate;border-spacing: 10px;}
td {}
tr {position:relative;transform: scale(1);}
tr:after {
content:'';
display:block;
width:100%;
height:1px;
background-color:#000;
position:absolute;
bottom:0;
left:0;
}
<table>
<tr>
<td>dasdasd</td>
<td>dasda</td>
<td>asdasda</td>
</tr>
<tr>
<td>dasdasd</td>
<td>dasda</td>
<td>asdasda</td>
</tr> <tr>
<td>dasdasd</td>
<td>dasda</td>
<td>asdasda</td>
</tr>
</table>
但是,我绝不会推荐在任何网络上使用 css 黑客。
如果您想继续使用 border-collapse: separate
。
您只需将 border 添加到每个 row 的每个 td 即可:
::ng-deep .tableTask .dx-datagrid-rowsview .dx-row td {
border-bottom: 1px solid red;
}
在 CSS.
末尾添加上面的代码如果你想给你的行添加一个完整的边框,你可以使用这个:
::ng-deep .tableTask .dx-datagrid-rowsview .dx-row td{
border-bottom: 1px solid red;
border-top: 1px solid red;
}
::ng-deep .tableTask .dx-datagrid-rowsview .dx-row td:first-child {
border-left: 1px solid red !important;
}
::ng-deep .tableTask .dx-datagrid-rowsview .dx-row td:last-child {
border-right: 1px solid red;
}
我已将 !important
添加到 border-left 因为已经有一些 CSS.