我在html中有一个包含一些表格数据的表格。
问题是我在桌子外面(表格的左侧)设计了一个删除和编辑可视链接,只有当用户将表格行悬停时才会显示。
如何在不弄乱默认表格布局的情况下添加这些链接?
目前的问题是,我需要创建一个包含删除和编辑链接,这会在表格结构不可见时混乱。
那么,有没有办法将一个容器添加到一个表(需要遵循表行结构),而不是一个td?或者你知道一些类似于我可以看到的类似的例子吗?
由于
答案 0 :(得分:2)
它有点复杂,但在JS Bin有一个演示来展示我的方法。我不完全确定-webkit-border-radius
支持我使用的符号(我在Chrome中测试了支持border-radius
),因此可能值得检查。
顺便说一句,由于我采用的方法(主要是为了避免手动添加类)可能是一个“干净”的设计,因此有一些近乎出血的CSS选择器,例如tbody tr:nth-child(odd) td:first-child
。我认为除:nth-child(odd)
伪选择器之外的所有这些都应该被IE7 +(具有有效的doctype)理解,但是我没有安装Windows来测试我的假设。由于这个特殊规则只是否决了早期选择器添加斑马条纹的特殊性,如果两者都没有被理解,那么它只是一个稍微不那么模糊的表格。
CSS如下:
body
{
background-color: #39f;
}
thead tr th,
tbody tr td
{
background-color: #fff;
border-collapse: collapse;
color: #000;
height: 2em;
margin: 0;
padding: 0.5em;
vertical-align: center;
width: auto;
}
tbody tr:nth-child(odd) td
{
background-color: #ffa;
}
th
{
font-weight: bold;
}
tr th:first-child,
tr td:first-child,
tbody tr:nth-child(odd) td:first-child
{
background-color: transparent;
border-radius: 1em 0 0 1em;
color: transparent;
moz-border-radius: 1em 0 0 1em;
padding: 0.5em 0 0.5em 0.5em;
webkit-border-radius: 1em 0 0 1em;
}
tr:hover td:first-child,
tbody tr:nth-child(odd):hover td:first-child
{
background-color: #fff;
color: #000;
}
tbody tr:nth-child(odd):hover td:first-child
{
background-color: #ffa;
color: #000;
}
和html:
<table cellspacing="0">
<thead>
<tr>
<th></th>
<th>visible</th>
<th>visible</th>
<th>visible</th>
<th>visible</th>
</tr>
</thead>
<tbody>
<tr>
<td>X</td>
<td>visible</td>
<td>visible</td>
<td>visible</td>
<td>visible</td>
</tr>
<tr>
<td>X</td>
<td>visible</td>
<td>visible</td>
<td>visible</td>
<td>visible</td>
</tr>
<tr>
<td>X</td>
<td>visible</td>
<td>visible</td>
<td>visible</td>
<td>visible</td>
</tr>
</tbody>
</table>
<强>被修改强>
我添加了上述演示和另一种方法的并排比较,我认为可能,在有效的标准模式doctype存在的情况下,工作得相当好旧浏览器。
修改过的演示在这里:JS Bin,当然可以点击“使用JS Bin编辑”按钮进行编辑。
通过将鼠标悬停在表格上也可以看到相关的CSS(虽然它可能更适合大型显示器。)
<强>被修改强>
要添加所有完成的版本,最好 - 我想我的能力,有两个表(可以在JS Bin看到(每个使用稍微不同的标记,并且完全不同的css)至少证明两种方法可以实现。
body {
background-color: #39f;
}
th {
font-weight: bold;
border-bottom: 2px solid #000;
}
th.title {
border-bottom: 1px solid #000;
}
th.hidden {
border: 0 none transparent;
}
thead tr th,
tbody tr td {
width: auto;
height: 2em;
vertical-align: center;
background-color: #fff;
color: #000;
padding: 0.5em;
margin: 0;
border-collapse: collapse;
}
#preferred thead tr th:first-child {
border: 0 none transparent;
}
#preferred tbody tr:nth-child(odd) td {
background-color: #ffa;
}
#preferred tr th:first-child,
#preferred tr td:first-child,
#preferred tbody tr:nth-child(odd) td:first-child {
color: transparent;
background-color: transparent;
padding: 0.5em 0 0.5em 0.5em;
-webkit-border-top-left-radius: 1em;
-webkit-border-bottom-left-radius: 1em;
-moz-border-radius: 1em 0 0 1em;
border-radius: 1em 0 0 1em;
}
#preferred tr:hover td:first-child,
#preferred tbody tr:nth-child(odd):hover td:first-child {
color: #000;
background-color: #fff;
}
#preferred tbody tr:nth-child(odd):hover td:first-child {
color: #000;
background-color: #ffa;
}
<table cellspacing="0" id="preferred">
<thead>
<tr>
<th></th>
<th class="title" colspan="4">id="preferred"</th>
</tr>
<tr>
<th></th>
<th>visible</th>
<th>visible</th>
<th>visible</th>
<th>visible</th>
</tr>
</thead>
<tbody>
<tr>
<td>X</td>
<td>visible</td>
<td>visible</td>
<td>visible</td>
<td>visible</td>
</tr>
<tr>
<td>X</td>
<td>visible</td>
<td>visible</td>
<td>visible</td>
<td>visible</td>
</tr>
<tr>
<td>X</td>
<td>visible</td>
<td>visible</td>
<td>visible</td>
<td>visible</td>
</tr>
</tbody>
</table>
#ieMaybe {
background-color: #39f;
}
#ieMaybe th,
#ieMaybe td {
background-color: #fff;
}
#ieMaybe th.hidden,
#ieMaybe td.hidden {
color: #39f;
background-color: transparent;
padding: 0.5em 0 0.5em 0.5em;
-webkit-border-top-left-radius: 1em;
-webkit-border-bottom-left-radius: 1em;
-moz-border-radius: 1em 0 0 1em;
border-radius: 1em 0 0 1em;
}
#ieMaybe tr:hover td.hidden,
#ieMaybe tr td.hidden:hover {
color: #000;
background-color: #fff;
}
<table cellspacing="0" id="ieMaybe">
<thead>
<tr>
<th class="hidden"></th>
<th class="title" colspan="4">id="ieMaybe"</th>
</tr>
<tr>
<th class="hidden"></th>
<th>visible</th>
<th>visible</th>
<th>visible</th>
<th>visible</th>
</tr>
</thead>
<tbody>
<tr>
<td class="hidden">X</td>
<td>visible</td>
<td>visible</td>
<td>visible</td>
<td>visible</td>
</tr>
<tr>
<td class="hidden">X</td>
<td>visible</td>
<td>visible</td>
<td>visible</td>
<td>visible</td>
</tr>
<tr>
<td class="hidden">X</td>
<td>visible</td>
<td>visible</td>
<td>visible</td>
<td>visible</td>
</tr>
</tbody>
</table>
我不能肯定地说,IE的版本是什么? 8在存在这种诡计的情况下,IE8(带有<!DOCTYPE html>
)会自愿地呈现它,尽管在弯曲的边界没有假装。哪个是耻辱,这里正在等待IE9! =)
正如@Yi Jiang所说,在评论中,首发代码中存在一些错误,这些错误一直保留(因为我开始使用CSS-blind),但代码块上面已经直接粘贴了最新的JS Bin演示版,所以除非 ctrl + V 一直在播放,否则应该,我希望,没事。
答案 1 :(得分:1)
您可以在第一个单元格中添加链接并使用CSS隐藏它们。绝对定位它们并将它们移动到看起来好像它们部分在桌子外面。
答案 2 :(得分:1)