我有一个表应用了下面的CSS规则:

table { border-collapse: collapse; }
td { border: 2px solid Gray; }

我希望某些细胞具有红色边框,而不是。

td.special { border: 2px solid Red; }

这不工作,我会期望。在FireFox 3和IE8它看起来像这样:

“IE8 结果 <子>(来源: control-v.net

在IE7兼容模式(运行中IE8)它看起来像这样:

“IE7兼容模式渲染” 结果 <子>(来源: control-v.net

我想<td>的所有四个侧面是红色的。我怎样才能做到这一点? 的测试情况下,可以在这里找到。

有帮助吗?

解决方案

使用边界崩溃

将是不可能的。你可以解决这个问题有点虽然,例如,通过这样做:

<td class="special"><div>Two</div></td>

然后将样式是这样的:

.special div {
    border: 2px solid #f00;
    margin: -2px;
}

什么(希望)会发生是TD内的DIV将2个像素向外膨胀并与红色边框覆盖的黑色边界。

其他提示

还有我刚才读的网站,优雅的解决了这一问题上的其他职位,但我找不到它。总之,办法是使边框样式double代替solid。这工作,因为双比固体更高的优先级。上1个像素或2px的边界,双线之间的间隙不会出现,因为线重叠。

table { border-collapse: collapse; }
td { border: 2px solid Gray; }
td.special { border: 2px double Red; }
<table>
    <tr><td>a</td><td>a</td><td>a</td></tr>
    <tr><td>a</td><td class="special">a</td><td>a</td></tr>
    <tr><td>a</td><td>a</td><td>a</td></tr>
</table>

使用伪元素:

可以使用伪元件来实现这一点。

只要绝对伪元素位置的相对到母体td元件。使伪元件填充父元素的整个尺寸,然后在边界添加到它。

示例这里

table {
    border-collapse: collapse;
}
table td {
    position: relative;
    border: 1px solid #000;
    padding: 2px;
}
table td.selected:after {
    content: '';
    position: absolute;
    top: 0; right: 0;
    bottom: 0; left: 0;
    border: 2px solid red;
}
<table>
    <tr>
        <td>One</td>
        <td>One</td>
        <td>One</td>
    </tr>
    <tr>
        <td>Two</td>
        <td class="selected">Two</td>
        <td>Two</td>
    </tr>
    <tr>
        <td>Three</td>
        <td>Three</td>
        <td>Three</td>
    </tr>
</table>

边界崩溃意味着TD的实际上没有他们的一些边界。你必须找到一些其他的方式来做到这一点。给予表格的背景,并带走所有的边界,但在离开TD利润率给出了一个很好的边界。然后设定一个边界会给内部边界,我相信。将这项工作?

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top