我想将一个绝对定位的元素添加为一行表格的:before
(或:after
)。
Look at this:
table {
border: 1px dotted gray;
border-collapse: collapse;
border-spacing: 0;
td {
padding: 0;
margin: 0;
width: 100px;
background: rgba(255, 0, 0, 0.2)
}
}
table.a .special::before {
content: 'a';
}
table.b .special::before {
content: 'a';
display: block;
position: absolute;
right: 10px;
}
table.c .special::after {
content: 'a';
display: block;
position: absolute;
right: 10px;
}
table.d .special .after {
display: block;
position: absolute;
right: 10px;
top: 0;
}
<table>
<tr>
<td>1</td>
<td>2</td>
<td>3</td>
</tr>
<tr class='special'>
<td>1</td>
<td>2</td>
<td>3</td>
</tr>
</table>
<br/>
<table class="a">
<tr>
<td>1</td>
<td>2</td>
<td>3</td>
</tr>
<tr class='special'>
<td>1</td>
<td>2</td>
<td>3</td>
</tr>
</table>
<br/>
<table class="b">
<tr>
<td>1</td>
<td>2</td>
<td>3</td>
</tr>
<tr class='special'>
<td>1</td>
<td>2</td>
<td>3</td>
</tr>
</table>
<br/>
<table class="c">
<tr>
<td>1</td>
<td>2</td>
<td>3</td>
</tr>
<tr class='special'>
<td>1</td>
<td>2</td>
<td>3</td>
</tr>
</table>
<Br/>
<table class="d">
<tr>
<td>1</td>
<td>2</td>
<td>3</td>
</tr>
<tr class='special'>
<td>1</td>
<td>2</td>
<td>3</td>
<div class='after'>a</div>
</tr>
</table>
我假设在添加这样一个元素时,渲染引擎(至少基于Webkit的)认为它是某种表单元格。
:before
在所有浏览器中都效果不佳。但是:after
在Firefox中效果非常好,在webkit中效果几乎很好。在WebKit中,它会保留一小段空间并使整个表格宽度变大。 - 这是我在WebKit中困扰我的地方。
如何修复这个问题?我可以在哪里阅读关于为什么会发生这种情况的内容?