Por favor, fixem os títulos da tabela
- É comum encontrar grandes conjuntos de dados ou layouts de tabela na web.
- O problema surge quando começamos a rolar uma tabela com centenas de linhas.
- Quando o cabeçalho da tabela desaparece, fica difícil para o usuário lembrar a que cada coluna se refere.
Cabeçalhos fixos
- Cabeçalhos fixos parecem mágica, mas são muito fáceis de implementar.
- Basta adicionar apenas duas propriedades CSS ao
thead:
position: sticky;
top: 0;
- Com cerca de 96% de suporte no mundo todo,
sticky é compatível de forma estável com muitos navegadores.
- Isso também ajuda a melhorar a experiência do usuário.
Opinião do GN⁺
- Ao lidar com grandes tabelas em sites, permitir que o usuário veja facilmente os títulos da tabela mesmo ao rolar para baixo melhora bastante a experiência do usuário.
- O fato de ser possível fixar o cabeçalho da tabela de forma simples usando a propriedade CSS
position: sticky; é uma informação útil para desenvolvedores web.
- Como esse recurso tem amplo suporte, desenvolvedores web podem saber que é possível implementá-lo com estabilidade em vários navegadores.
1 comentários
Comentários do Hacker News
position: sticky;deveria ser fácil, mas surgem problemas quando se faz certas coisas com o conteúdo da tabela. Por exemplo, adicionei um recurso para restaurar a posição de rolagem quando o usuário rola a tabela, sai da página e depois volta; porém, a posição restaurada sempre ficava uma linha abaixo. Ao olhar através do cabeçalho transparente da tabela, a linha desejada estava no topo, mas o cabeçalho a cobria e a linha seguinte aparecia como a primeira visível. Ajustar a posição de rolagem levando em conta a altura do cabeçalho funcionava no início, mas às vezes ficava alguns pixels fora. Isso acontecia porque a tabela é grande, então há lazy loading em resposta ao evento de rolagem, e também porque eu estava usando layout automático de tabela, o que às vezes fazia as células do cabeçalho ficarem estreitas demais, quebrando palavras em várias linhas e aumentando a altura total do cabeçalho. A solução final foi criar umResizeObserverno elemento do cabeçalho para ajustar dinamicamente a posição de rolagem quando a altura mudasse. Documentação do ResizeObserver<th>, é bem provável que esse seja o comportamento desejado.position: stickynos elementos<thead>e<tr>: link para issue no Chromiumtoplevando a borda em conta (por exemplo, 0 em vez de -1px) pode evitar que o corpo da tabela escorra por cima do cabeçalho. Há uma comparação entre dois exemplos do CodePen: CodePen original e CodePen melhorado