【问题标题】:How to make highlighted table with rowspan如何使用行跨度制作突出显示的表格
【发布时间】:2016-06-16 11:53:05
【问题描述】:

我有一个带有行跨度的表格,这是我的 HTML 代码:

<table width="800" cellpadding="5" border="1">
   <tr class="head">
       <th>NO.</th>
       <th>FOOD NAME</th>
       <th>TYPE</th>
       <th>STATUS</th>
   </tr>
   <tr class='row'>
        <td rowspan='2' align='center'>1.</td>
        <td rowspan='2'>Mozarella Cheese</td>
        <td>Regular</td>
        <td rowspan='2' align='center'>Available</td>
   </tr>
   <tr class='row'>
        <td>Premium</td>
   </tr>
   <tr class='row'>
        <td rowspan='2' align='center'>2.</td>
        <td rowspan='2'>Greentea Milk</td>
        <td>Regular</td>
        <td rowspan='2' align='center'>Available</td>
   </tr>
   <tr class='row'>
        <td>Premium</td>
   </tr>
</table>

这是我的 CSS 代码:

.head {
   background: rgb(206,220,231); /* Old browsers */
   background: -moz-linear-gradient(top,  rgba(206,220,231,1) 0%, rgba(89,106,114,1) 100%); /* FF3.6+ */
   background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,rgba(206,220,231,1)), color-stop(100%,rgba(89,106,114,1))); /* Chrome,Safari4+ */
   background: -webkit-linear-gradient(top,  rgba(206,220,231,1) 0%,rgba(89,106,114,1) 100%); /* Chrome10+,Safari5.1+ */
   background: -o-linear-gradient(top,  rgba(206,220,231,1) 0%,rgba(89,106,114,1) 100%); /* Opera 11.10+ */
   background: -ms-linear-gradient(top,  rgba(206,220,231,1) 0%,rgba(89,106,114,1) 100%); /* IE10+ */
   background: linear-gradient(to bottom,  rgba(206,220,231,1) 0%,rgba(89,106,114,1) 100%); /* W3C */
   filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#cedce7', endColorstr='#596a72',GradientType=0 ); /* IE6-9 */}

.head th {
    padding:10px;
    color:#333;
    text-shadow:1px 1px 0px #CCC;
    font-size:14px;
}

.row {
    background-color:#E0E0E0;
    font-size:12px;
 }

.row:hover td[rowspan] {
    background: #00FF33;
    font-weight:bold;
    cursor:pointer;
}
.row:hover td[rowspan]:hover ~ tr {
    background: #00FF33;
    font-weight:bold;
    cursor:pointer;
}

我希望我的表格的每一行都突出显示,但它不适用于我上面的 CSS 代码。我怀疑是因为我的表中有一个行跨度,所以效果不佳。我能做些什么来解决我的问题?如何使用行跨度制作突出显示的表格?

【问题讨论】:

  • 如果你会使用 JQuery 那就太好了

标签: css html-table highlight


【解决方案1】:

您可以按照您的示例向“Premium”单元格添加一个特殊的钩子类。然后将它们定位到主要的.row:hover 状态。

另外,您不需要 td[rowspan] 部分。

考虑以下代码:

.head {
   background: rgb(206,220,231); /* Old browsers */
   background: -moz-linear-gradient(top,  rgba(206,220,231,1) 0%, rgba(89,106,114,1) 100%); /* FF3.6+ */
   background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,rgba(206,220,231,1)), color-stop(100%,rgba(89,106,114,1))); /* Chrome,Safari4+ */
   background: -webkit-linear-gradient(top,  rgba(206,220,231,1) 0%,rgba(89,106,114,1) 100%); /* Chrome10+,Safari5.1+ */
   background: -o-linear-gradient(top,  rgba(206,220,231,1) 0%,rgba(89,106,114,1) 100%); /* Opera 11.10+ */
   background: -ms-linear-gradient(top,  rgba(206,220,231,1) 0%,rgba(89,106,114,1) 100%); /* IE10+ */
   background: linear-gradient(to bottom,  rgba(206,220,231,1) 0%,rgba(89,106,114,1) 100%); /* W3C */
   filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#cedce7', endColorstr='#596a72',GradientType=0 ); /* IE6-9 */}

.head th {
    padding:10px;
    color:#333;
    text-shadow:1px 1px 0px #CCC;
    font-size:14px;
}

.row {
    background-color:#E0E0E0;
    font-size:12px;
 }

.row:hover td, .row:hover + .premium td {
    background: #00FF33;
    font-weight:bold;
    cursor:pointer;
}
.row:hover td:hover ~ tr {
    background: #00FF33;
    font-weight:bold;
    cursor:pointer;
}
<table width="800" cellpadding="5" border="1">
   <tr class="head">
       <th>NO.</th>
       <th>FOOD NAME</th>
       <th>TYPE</th>
       <th>STATUS</th>
   </tr>
   <tr class='row'>
        <td rowspan='2' align='center'>1.</td>
        <td rowspan='2'>Mozarella Cheese</td>
        <td>Regular</td>
        <td rowspan='2' align='center'>Available</td>
   </tr>
   <tr class='row premium'>
        <td>Premium</td>
   </tr>
   <tr class='row'>
        <td rowspan='2' align='center'>2.</td>
        <td rowspan='2'>Greentea Milk</td>
        <td>Regular</td>
        <td rowspan='2' align='center'>Available</td>
   </tr>
   <tr class='row premium'>
        <td>Premium</td>
   </tr>
</table>

我会考虑创建一个更好的标记结构,因为这不是易于维护的代码,但正如您在上面看到的,它绝对可以工作。

【讨论】:

  • 它可以按我的意愿工作。惊人的。感谢@Johnny Kutnowski 的帮助。
猜你喜欢
  • 2010-09-08
  • 2016-03-29
  • 2020-02-09
  • 1970-01-01
  • 2013-06-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多