Eu tenho o seguinte código:
<td style="position: relative; min-height: 60px; vertical-align: top;">
Contents of table cell, variable height, could be more than 60px;
<div style="position: absolute; bottom: 0px;">
Notice
</div>
</td>
Isso não funciona de jeito nenhum. Por algum motivo, o comando position: relative não está sendo lido no TD e o aviso DIV está sendo colocado fora do contêiner na parte inferior da minha página. Tentei colocar todo o conteúdo do TD em um DIV, como:
<td>
<div style="position: relative; min-height: 60px; vertical-align: top;">
Contents of table cell, variable height, could be more than 60px;
<div style="position: absolute; bottom: 0px;">
Notice
</div>
</div>
</td>
No entanto, isso cria um novo problema. Como a altura do conteúdo da célula da tabela é variável, o aviso DIV nem sempre está na parte inferior da célula. Se uma célula da tabela se estende além do marcador de 60px, mas nenhuma das outras células o faz, então, nas outras células, o aviso DIV está em 60px para baixo, em vez de na parte inferior.
html
position
html-table
Jason Axelrod
fonte
fonte
Respostas:
Isso ocorre porque, de acordo com o CSS 2.1 , o efeito de
position: relative
nos elementos da tabela é indefinido. Ilustrativo disso,position: relative
tem o efeito desejado no Chrome 13, mas não no Firefox 4. Sua solução aqui é adicionar um emdiv
torno de seu conteúdo e colocar oposition: relative
em quediv
em vez dotd
. O seguinte ilustra os resultados que você obtém composition: relative
(1) em um (div
bom), (2) em umtd
(não é bom) e, finalmente, (3) emdiv
umtd
(bom novamente).fonte
td
dentro de adiv
, definir comowidth: 100%
eheight: 100%
, aplicar qualquer preenchimento do td ao div e definir comorelative
? A ideia é criar uma fina camada de conteúdo logo acima dotd
, que atua como otd
próprio, mas é umdiv
. Funcionou para mimposition:relative
sobre partes da tabela internos foi indefinido, isso significava comportamento das próprias partes da tabela (por exemplo, não ficou claro como deve ser as fronteiras dotd
comportam se for deslocado viaposition:relative
em caso deborder-collapse:collapse
). Isso não os excluiu de possíveis blocos contendo os descendentes absolutamente posicionados. Portanto, o comportamento do Firefox acabou por ser apenas um bug, que foi corrigido em 2014.Este truque também é adequado, mas neste caso as propriedades de alinhamento (meio, fundo, etc.) não funcionarão.
fonte
O conteúdo da célula da tabela, com altura variável, pode ser superior a 60 px;
fonte
Com relação à sua segunda tentativa, você tentou usar o alinhamento vertical? Ou
ou com css
fonte
também funciona se você fizer um "display: block;" no td, destruindo a identidade do td, mas funciona!
fonte