CSS border-collapse 在 Chrome 和 display:flex inside a td 中不能完全工作?
CSS border-collapse doesn't work fully in Chrome with display:flex inside a td?
使用 border-collapse: collapse;
将一些 tds 的边框宽度设置为“细”,将一些设置为“0” 我本以为会给我 no 2px 宽的边框,但我得到不一致的边界。当它上面有 display:flex 时,这似乎是一个问题——呈现为 2px 宽而不是 1px,就好像没有边框折叠一样。这是 Chrome 的缺点还是我缺少 CSS 技巧?
有没有人知道什么情况导致边界崩溃达不到 Chrome 中的理想状态?
这是示例中的效果 - 单元格二似乎忽略了边框折叠。
table {
box-sizing: border-box;
border-collapse: collapse;
}
td {
border-left: thin solid #d3d3d3;
border-right: thin solid #d3d3d3;
}
.d-flex { display: flex; }
<table class="my-grid">
<tr>
<td>cell one</td>
<td class="d-flex">cell two</td>
</tr>
<tr>
<td>cell three</td>
<td>cell four</td>
</tr>
</table>
border-collapse 属性 仅适用于 table 和 inline-table 元素。
您要让 table 单元格显示为 flex 而不是 inline-table 元素,因此它不能折叠其边框。
请注意,这也不是特定的 Chrome。在 Edge 和 Firefox 中测试会产生相同的结果。
使用 display: flex;
会使单元格失去一些理想的 table 单元格属性,因为它不再设置为 display: table-cell;
,并且没有 display: table-cell-flex
。
所以唯一的解决方案似乎是在 <td>
中添加一个容器 <div>
元素,它自然应该占据整个 table 单元格,除了它的填充(如果有的话) , 并使其具有 display: flex;
以便我可以对内容使用 flexbox 样式。
table {
box-sizing: border-box;
border-collapse: collapse;
}
td {
border-left: thin solid #d3d3d3;
border-right: thin solid #d3d3d3;
}
td {
display: table-cell;
vertical-align: inherit;
}
.d-flex { display: flex; }
<table class="my-grid">
<tr>
<td>cell one</div></td>
<td><div class="d-flex">cell two</div></td>
</tr>
<tr>
<td>cell three</td>
<td>cell four</td>
</tr>
</table>
使用 border-collapse: collapse;
将一些 tds 的边框宽度设置为“细”,将一些设置为“0” 我本以为会给我 no 2px 宽的边框,但我得到不一致的边界。当它上面有 display:flex 时,这似乎是一个问题——呈现为 2px 宽而不是 1px,就好像没有边框折叠一样。这是 Chrome 的缺点还是我缺少 CSS 技巧?
有没有人知道什么情况导致边界崩溃达不到 Chrome 中的理想状态?
这是示例中的效果 - 单元格二似乎忽略了边框折叠。
table {
box-sizing: border-box;
border-collapse: collapse;
}
td {
border-left: thin solid #d3d3d3;
border-right: thin solid #d3d3d3;
}
.d-flex { display: flex; }
<table class="my-grid">
<tr>
<td>cell one</td>
<td class="d-flex">cell two</td>
</tr>
<tr>
<td>cell three</td>
<td>cell four</td>
</tr>
</table>
border-collapse 属性 仅适用于 table 和 inline-table 元素。
您要让 table 单元格显示为 flex 而不是 inline-table 元素,因此它不能折叠其边框。
请注意,这也不是特定的 Chrome。在 Edge 和 Firefox 中测试会产生相同的结果。
使用 display: flex;
会使单元格失去一些理想的 table 单元格属性,因为它不再设置为 display: table-cell;
,并且没有 display: table-cell-flex
。
所以唯一的解决方案似乎是在 <td>
中添加一个容器 <div>
元素,它自然应该占据整个 table 单元格,除了它的填充(如果有的话) , 并使其具有 display: flex;
以便我可以对内容使用 flexbox 样式。
table {
box-sizing: border-box;
border-collapse: collapse;
}
td {
border-left: thin solid #d3d3d3;
border-right: thin solid #d3d3d3;
}
td {
display: table-cell;
vertical-align: inherit;
}
.d-flex { display: flex; }
<table class="my-grid">
<tr>
<td>cell one</div></td>
<td><div class="d-flex">cell two</div></td>
</tr>
<tr>
<td>cell three</td>
<td>cell four</td>
</tr>
</table>