我想将绝对定位的元素添加为表格行的:after
(of :before
)。
看这个:
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 中困扰我的地方。
如何解决这个问题?我在哪里可以了解它发生的原因?