表格行上的CSS框阴影无法正确显示

时间:2019-03-07 14:22:08

标签: css box-shadow

当鼠标悬停在表行上时,我在表行中添加了一个略微的框阴影,以便使表行更加明显。它可以正常工作,但是当我添加交替的行颜色时,它将停止正确显示。

Here is a JSFiddle of the problem.

<div class="search-table">
<table>
  <tbody>
    <tr>
      <td>A1</td>
      <td>A2</td>
    </tr>
    <tr class="alt">
      <td>B1</td>
      <td>B2</td>
    </tr>
    <tr>
      <td>C1</td>
      <td>C2</td>
    </tr>
    <tr class="alt">
      <td>C1</td>
      <td>C2</td>
    </tr>
  </tbody>
</table>
</div>
<style>
.search-table {
    display: block;
    background-color: #535353;
    font: normal 12px/150% Arial, Helvetica, sans-serif;
    overflow: hidden;
    border: 1px solid #8C8C8C;
    -webkit-border-radius: 3px;
    -moz-border-radius: 3px;
    border-radius: 3px;
}

.search-table a {
    color: #424242;
}

.search-table table {
    border-collapse: collapse;
    text-align: left;
    width: 100%;
    background-color: #ffffff;
}

.search-table table td, .search-table table th {
    padding: 3px 10px;
}

.search-table table thead th {
    background: -webkit-gradient( linear, left top, left bottom, color-stop(0.05, #8C8C8C), color-stop(1, #7D7D7D) );
    background: -moz-linear-gradient( center top, #8C8C8C 5%, #7D7D7D 100% );
    filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#8C8C8C', endColorstr='#7D7D7D');
    background-color: #8C8C8C;
    color: #FFFFFF;
    font-size: 15px;
    font-weight: bold;
    border-left: 1px solid #A3A3A3;
}

.search-table table thead th:first-child {
    border: none;
}

.search-table table tbody td {
    color: #424242;
    border-left: 1px solid #DBDBDB;
    font-size: 1.25em;
    font-weight: normal;
    padding: 0.5em;
}

.search-table table tbody tr {
    z-index: 0;
}

.search-table table tbody tr:hover {
    box-shadow: 0px 0px 3px 0px #00000082;
    z-index: 1;
}

.search-table table tbody tr.alt {
    background: #EBEBEB;
    color: #424242;
}

.search-table table tbody td:first-child {
    border-left: none;
}

.search-table table tbody tr:last-child td {
    border-bottom: none;
}
</style>

如您所见,框形阴影将鼠标悬停在带有“ alt”类的深色行上方时应显示为原来的样子,但是对于较浅色的行,它仅在行的顶部显示阴影,而不是在上方底部。从第二行和第四行中删除“ alt”类可以解决该问题,但要以交替显示行颜色为代价。是什么导致这种现象发生,我该如何解决?

2 个答案:

答案 0 :(得分:1)

z-index的{​​{1}}似乎无法按照您的意愿进行更改,因此阴影会以背景色显示在行上方。

这是不完美的,但是您可以像目前一样在<tr>元素上设置BG颜色,然后在内部{{ 1}}这样的元素

<tr>

这并不完美,因为单元格之间的内部水平边界也会获得阴影,但是可以为每个单元格设置自定义阴影大小/位置并应用阴影。

另一种选择可能是保留您拥有的东西,并在box-shadow上使用嵌入阴影,如下所示:

<td>

然后最后一个复杂的解决方案可能是使用一些JS移动带有阴影的透明元素,并在悬停每个单元格时正确定位和调整其大小。

或者...我能做的只是改变悬停行的BG颜色,而忽略阴影!

答案 1 :(得分:1)

通过将H应用于悬停的行,可以解决框阴影被其他表行“隐藏”的问题:

transform: scale(1)