css TD背景色导致边框消失

mwkjh3gx  于 2023-01-27  发布在  其他
关注(0)|答案(2)|浏览(180)

我有一个动态创建的大型HTML表格。该表格具有标准结构,包括colgrouptheadtbody以及以下样式。
到目前为止,一切都按预期工作,但当我添加类“bgGrey”到一列中的TD(见下文),以便为该列中的单元格提供背景色(仅在一列中需要)时,该列的所有边框在IE11中消失,除了左边框,并且**:hover::before样式在Chrome**(版本43)中不再工作。
如果不添加"bgGrey"类,我在两个浏览器中都没有问题。
似乎是背景色与边框重叠造成的。

我的CSS(相关部分):

#myTable, #myTable tbody, #myTable thead, #myTable tr {
    width: 100%;
}
#myTable, #myTable th, #myTable td {
    border: 1px solid #000;
    border-collapse: collapse;
    margin: 0;
    padding: 4px;
    position: relative;
}
#myTable {
    font-size: 14px;
    table-layout: fixed;
}
#myTable th.editable:hover::before, #myTable td.editable:hover::before {
    border: 1px solid blue;
    content: '';
    position: absolute;
    top: 0; right: 0; bottom: 0; left: 0;
    z-index: -1;
}
#myTable .th1 {
    padding: 2px;
}
#myTable .th2 {
    font-weight: normal;
}

.bgGrey {
    background-color: #e6e6e6;
}

我的HTML(示例TR):

<tr>
    // ...
    <td class="editable"><div contenteditable="true"></div></td>
    <td class="bgGrey editable txtCenter"><div contenteditable="true"></div></td>
    <td class="editable txtRight"><div contenteditable="true"></div></td>
    // ...
</tr>
1cklez4t

1cklez4t1#

我自己也遇到了这个问题,但我不喜欢这里给出的解决方案,所以我一直在谷歌上搜索,我找到了这个答案:https://stackoverflow.com/a/16337203/1156476
在这里,对表格单元格进行简单的添加即可固定边框:

table td {
  border: 1px solid #000;
  border-collapse: collapse;
  margin: 0;
  padding: 4px;
  position: relative;
  background-clip: padding-box; /* Add this line */
}

查看Caniuse上的浏览器支持
关于这个属性的解释可以在Standardista上找到

ukxgm1gy

ukxgm1gy2#

请从#myTable td中删除border-collapse: collapse;,这将导致边框消失。请避免为td指定此选项。
改为这样添加:

#myTable, #myTable th, #myTable td {
    border: 1px solid #000;
    border-collapse: collapse;
    margin: 0;
    padding: 4px;
    position: relative; //REMOVE THIS
}

另外,请您尝试从CSS中删除“位置:相对”?

相关问题