【发布时间】:2015-03-10 19:07:20
【问题描述】:
有没有人知道如何使用 td 上的 :before/:after 高度来修复(明显的)IE 渲染错误?
从外观上看,IE 似乎只认为 :before/:after 伪元素与它内部的父级 <TD> 内容一样高。如果<TD> #1 是 x2 行高 w 内容,<TD> #2 只有 x1 行内容,IE 将仅渲染 <TD> #2 的 :before/:after 高度与 x1 行的值一样高内容。
我在这里创建了一个小提琴示例以更好地说明我的问题:http://jsfiddle.net/231gnfpz/ 注意:我为 :before/:after 添加了红色背景,以更好地帮助我在 IE 中可视化我的问题
在我的示例中,我有一个中间 <TD>,我应用了一个 :before/:after 来尝试在特定列的外部创建一个盒子阴影。它是一个旧项目,所以我无权重写整个表格,FireFox/Chrome 似乎对此没有问题,IE8-11 似乎与我的 :before/:after 有同样的问题 height:100% .
代码:
table {
background: grey;
width: 100%;
}
table td {
text-align: center;
vertical-align: top;
background: white;
padding: 4px;
width: 33.33%;
position: relative;
}
.testTD:before {
box-shadow: -15px 0 15px -15px grey inset;
content: " ";
height: 100%;
left: -15px;
position: absolute;
top: 0;
width: 15px;
background: Red;
}
.testTD:after {
z-index: 1;
box-shadow: 15px 0 15px -15px grey inset;
content: " ";
height: 100%;
right: -15px;
position: absolute;
top: 0;
width: 15px;
background: Red;
}
<table cellspacing="1" cellpadding "0" border="0">
<tr>
<td>test1</td>
<td class="testTD">test1</td>
<td>test1</td>
</tr>
<tr>
<td>test2
<br/>test2
</td>
<td class="testTD">test2</td>
<td>test2</td>
</tr>
<tr>
<td>test3
<br/>test3
<br/>test3
</td>
<td class="testTD">test3</td>
<td>test3</td>
</tr>
</table>
【问题讨论】:
标签: css internet-explorer