我有一张表:
:hover
伪类的行具有背景颜色以突出显示它们 - 例如,当鼠标在表格上移动时(在IE7和其他任何现代版本中)跟踪行。问题是当悬停突出显示行时,我希望特殊单元格不是特殊的;看起来很奇怪。我需要支持IE7(谢天谢地不是6个!)并且自然希望支持Chrome,Firefox,Safari和大多数其他现代浏览器。
以下是相关规则的精简版本:
table.status
{
border-collapse: collapse;
background-color: #CDD8ED;
}
table.status tr:hover
{
background-color: #FAF0BD;
}
/* "down" cells are special */
table.status td.down
{
background-color: #D22;
color: white;
}
我尝试过的事情:
:not
伪类:table.status tr:not(:hover) td.down
。适用于Chrome和Firefox,而不适用于IE7。table.status tr:hover td.down
重复属性的更具体的规则(例如inherit
)。 (Blech,脆弱,在将样式添加到另一个规则中时,必须确保将继承样式添加到另一个规则。)再次适用于Chrome和Firefox,而不适用于IE7。我真的不想做的事情:
inherit
更脆弱。但功能齐全。还有其他CSS解决方案吗?
FWIW,这是我的测试页面:
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-type" content="text/html;charset=UTF-8">
<title>Hover Test Page</title>
<style type='text/css'>
body
{
font-family: sans-serif;
}
table.status
{
border-collapse: collapse;
background-color: #CDD8ED;
}
table.status th
{
text-align: left;
background-color: #14429E;
color: #FEFEFE;
}
table.status td, table.status th
{
padding: 2px 0.5em;
}
table.status tr:hover
{
background-color: #FAF0BD;
}
/*table.status tr:not(:hover) td.down*/
table.status td.down
{
background-color: #D22;
color: white;
font-weight: bold;
}
/*table.status tr:hover td.down
{
background-color: inherit;
color: inherit;
font-weight: inherit;
}*/
</style>
</head>
<body>
<table class='status'>
<thead>
<tr>
<th>Server</th>
<th>Details</th>
<th>www</th>
<th>mail</th>
</tr>
</thead>
<tbody>
<tr>
<td>Server1</td>
<td>blah blah blah</td>
<td class='up'>Up</td>
<td class='up'>Up</td>
</tr>
<tr>
<td>Server2</td>
<td>blah blah blah</td>
<td class='up'>Up</td>
<td class='down'>Down</td>
</tr>
<tr>
<td>Server3</td>
<td>blah blah blah</td>
<td class='sched'>Down (scheduled)</td>
<td class='sched'>Down (scheduled)</td>
</tr>
<tr>
<td>Server4</td>
<td>blah blah blah</td>
<td class='up'>Up</td>
<td class='up'>Up</td>
</tr>
</tbody>
</table>
</body>
</html>
答案 0 :(得分:1)
由于您在表格上使用了border-collapse
,因此您可以通过以下方式实现目标:
table.status tr:hover td
{
background-color: #FAF0BD;
}
..代替..
table.status tr:hover
{
background-color: #FAF0BD;
}
我理解你的问题,因为你希望tr:hover规则优先于特殊单元格。在这种情况下,在您的标记中,这些是class="down"
的单元格,对吗?由于您使用的是border-collapse
,因此<td>
的背景颜色会在<tr>
内混合在一起。希望这会有所帮助。
答案 1 :(得分:0)
我不确定我理解你......但我认为这可行:
table.status td.down, table.status td.down:hover
{
background-color: #D22;
color: white;
}
答案 2 :(得分:-1)
当您将鼠标悬停在表格行上时,简单地从特殊单元格中删除白色会出现什么问题? (未经测试 - 只有IE6在工作)。
/ *“向下”单元格是特殊的,但是当盘旋时让它们看起来像其他* /
table.status tr:hover td.down
{
background-color: #FAF0BD;
color: black;
}
如果您拥有完整的doctype,这可能会更有效。 例如
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
编辑:没关系 - 没有读完整的问题 - 祝你好运!