Eu preciso de uma solução simples. Eu sei que é semelhante a algumas outras perguntas, como:
- Tabela HTML com cabeçalhos fixos e uma coluna fixa?
- Como bloquear a primeira linha e a primeira coluna de uma tabela ao rolar, possivelmente usando JavaScript e CSS?
Mas preciso que apenas uma coluna da esquerda seja congelada e prefiro uma solução simples e sem scripts.
html
css
html-table
agsamek
fonte
fonte
Respostas:
Se você deseja uma tabela na qual apenas as colunas rolam horizontalmente, é possível
position: absolute
a primeira coluna (e especificar explicitamente sua largura) e, em seguida, agrupar a tabela inteira em umoverflow-x: scroll
bloco. Não se preocupe em tentar isso no IE7, no entanto ...HTML e CSS relevantes:
Violino
fonte
text-overflow: ellipsis
para exibi-las corretamente.Este é um plugin interessante do jQuery que cria cabeçalhos e / ou colunas fixos. Alterne a coluna fixa para ser verdadeira na página de demonstração para vê-la em ação.
fonte
Você pode usar a
sticky
posição. Aqui está um código de exemplo. Esta é a solução HTML / CSS. Nenhum js é necessário.Código de inicialização: https://www.bootply.com/g8pfBXOcY9
fonte
No caso de coluna esquerda de largura fixa, a melhor solução é fornecida por Eamon Nerbonne .
No caso da coluna esquerda de largura variável, a melhor solução que encontrei é criar duas tabelas idênticas e empurrar uma acima da outra. Demonstração: http://jsfiddle.net/xG5QH/6/ .
fonte
seperate
sob o boottap, caso contrário, as bordas não flutuam com as células. Limpeza de borda necessária depois disso.visibility: collapse;
às colunas para ocultar da tabela fixa (preciso amar o:not()
seletor de css! ) Eu também usei o jQuery para.clone()
a tabela, uma vez que ele foi gerado pelo php + MySQL + ajax, e inseri-lo em uma div limpa ... #FWIW, aqui está uma tabela que pode ser rolada com a cabeça e o lado fixos.
http://codepen.io/ajkochanowicz/pen/KHdih
fonte
Um pouco tarde, mas eu me deparei com esse tópico ao tentar soluções para mim. Supondo que você esteja usando navegadores modernos hoje em dia, eu vim com uma solução usando CSS calc () para ajudar a garantir as larguras encontradas.
Espero que isso ajude alguém!
fonte
<br/>
no<th>
elemento?Estilize a coluna esquerda com
position: fixed
. (Você provavelmente usará estilostop
eleft
estilos para controlar exatamente onde isso ocorre.)fonte
position: fixed
mantida, o restante do conteúdo age normalmente (presumivelmente com uma margem esquerda definida para não sobrepor a coluna da esquerda).Para a maioria dos navegadores lançados após 2017:
Você pode usar o
position: sticky
. Consulte https://caniuse.com/#feat=css-sticky .Não há necessidade de uma coluna de largura fixa.
Execute o snippet de código abaixo para ver como ele funciona.
fonte
sticky
, assim não há necessidade para mais umposition: sticky
altera o comportamento, portanto, já foi mostrado.Peguei a resposta de Earmon Nerbonne e a editei para trabalhar com tabelas que preenchem toda a largura.
http://jsfiddle.net/DYgD6/6/
A largura da coluna fixa ainda precisa ser um valor definido.
fonte
Se você estiver desenvolvendo algo mais complicado e quiser que várias colunas sejam fixadas / presas à esquerda, provavelmente precisará de algo assim.
fonte
Se você está no inferno do desenvolvedor de Web e precisa fazer isso funcionar no IE6, aqui está um código de exemplo que eu usei:
Provavelmente funcionará APENAS para o IE6, portanto, use comentários condicionais para o CSS.
fonte
Não há necessidade de adicionar nenhum plugin, o CSS pode fazer este trabalho !!!
A idéia é tornar absoluta a posição de todas as primeiras células de cada coluna e tornar a largura fixa. Ex:
Isso oculta algumas partes de algumas colunas sob a primeira coluna; portanto, adicione uma segunda coluna vazia (adicione a segunda td vazia) com largura igual à primeira coluna.
Eu testei e isso funciona no Chrome e Firefox.
fonte
Eamon Nerbonne, mudei alguns css no seu código e está melhor agora (a barra de rolagem começa na primeira linha)
http://jsfiddle.net/At8L8/
Eu apenas adiciono duas linhas:
fonte
Você pode apenas fazer a primeira coluna
position: sticky; z-index: 9
. Isso fará com que a coluna / linha fique na sua posição atual. Confira meu exemplo codepen aqui https://codepen.io/swastikmishra/pen/zYYdKBQExemplo HTML
fonte
O Opera estava com problemas para todas as respostas anteriores quando as testei no meu Mac. Se você rolar pela tabela, a coluna fixa desaparecerá após a passagem da primeira coluna não corrigida. Fui em frente e escrevi o código abaixo. Ele funciona em todos os navegadores que tenho instalados localmente. Eu não sei como, por exemplo, lida com isso.
Lembre-se de que, se você pretende pular linhas em uma tabela e não na outra ou alterar a altura das linhas, pode ser necessário ajustar esse código.
fonte
Aqui está outra modificação da resposta mais popular, mas com o tratamento do tamanho variável do texto nos rótulos da primeira coluna: http://jsfiddle.net/ozx56n41/
Basicamente, estou usando a segunda coluna para criar a altura da linha, como foi mencionado. Mas meu violino realmente funciona ao contrário dos mencionados acima.
HTML:
CSS:
fonte
Para mim, este foi o único que funcionou perfeitamente (graças a Paul O'Brien!): Https://codepen.io/paulobrien/pen/gWoVzN
Aqui está o trecho:
fonte
Como alternativa, estilize o corpo com um tamanho predeterminado (via
height:20em
, por exemplo) e useoverflow-y:scroll;
Então, você pode ter um corpo enorme, que rolará independentemente do restante da página.
fonte
fonte
Isso pode ser feito facilmente com a ajuda de tabelas de dados. As pessoas que são novas nas tabelas de dados, consulte https://datatables.net/ . É um plug-in e oferece muitos recursos. No código fornecido, o cabeçalho é corrigido, as 3 primeiras colunas são corrigidas e vários outros recursos são Lá também.
fonte
Não verifiquei todas as respostas para essa pergunta, mas, depois de analisar a maioria delas, descobri que o design falha no caso de dados de várias linhas nas células ou na cabeça. Eu usei o Javascript para resolver isso. Espero que alguém ache isso útil.
https://codepen.io/kushagrarora/pen/zeYaoY
Nota: a div "container" serve apenas para demonstrar que o código é compatível com a visualização para dispositivos móveis.
fonte
Acabei de criar a coluna mais à direita de uma tabela.
Acredito que, se você conseguir
{position: sticky; left: 0;}
, obterá o resultado desejado.fonte
sticky
não é suportado pelo IE.Se você não quiser tocar muito em sua tabela atual, poderá criar uma coluna fixa falsa na frente da tabela.
O exemplo mostra uma maneira de fazer isso sem JS
fonte
No HTML5, você pode usar CSS
style.transform
.No entanto, eu recomendo que você "deslize entre as páginas" desative Se você implementar no Mac.
veja exemplo codePen
fonte
Adicione isso na cabeça:
Javascript:
fonte