У меня есть такая таблица:
<table cellspacing="0">
<tr>
<td>Row 1</td>
<td><button>Button 1</button></td>
</tr>
<tr>
<td>Row 2</td>
<td><button>Button 2</button></td>
</tr>
<tr>
<td>Row 3</td>
<td><button>Button 3</button></td>
</tr>
</table>
Я хотел расположить каждую кнопку в правом верхнем углу строки таблицы, поэтому я использовал этот CSS, ожидая, что <tr>
будет содержать <button>
:
tr {
position:relative;
}
button {
position:absolute;
top:0;
right:0;
}
Однако все кнопки расположены друг над другом в одном и том же месте. Обычно он работает нормально, используя <div>
s, за исключением того, что он будет вести себя таким же образом при использовании display:table-row
, который я обнаружил во время тестирования, и для меня это стало неожиданностью.
Демо: http://jsfiddle.net/QU2zT/1/
Примечание : Моя фактическая разметка является более сложной, и элемент, который я пытаюсь расположить, может появиться в любом месте любой ячейки таблицы в ее строке, поэтому я считаю, что мне нужно position:absolute
.
- Почему это происходит?
- Как обойти это, используя CSS, без изменения разметки?
РЕДАКТИРОВАТЬ : результаты в Firefox отличаются от результатов в Chrome и IE9 (после этого не тестировались). FF является полным провалом, в то время как другие браузеры не содержат настройки «divs with table display», как показано в demo .