Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sergio S. F. Pereira

[Resolvido] Table Body (tbody) com scroll y

Recommended Posts

Boa tarde senhores, estou tentando colocar um scroll vertical no conteúdo da minha tabela para deixar o header fixo e rolar somente o tbody,  mas não estou conseguindo, já quebrei a cabeça e de repente to patinando em algo bem simples, alguém pode ver o que está errado no meu código por favor?

Aqui está o meu fiddle: https://jsfiddle.net/kyq05vws/

 

HTML


<table>
  <thead>
    <tr>
      <th>Seq.</th>
      <th>Codigo</th>
      <th>Nome</th>
      <th>Qtd</th>
      <th>Preço</th>
      <th>Valor Total</th>
      <th></th>
  </tr>
  </thead>
  <tbody id="tabela">
    <tr>
      <td>1</td>
      <td>REF004</td>
      <td>BOLSA DE ROUPAS DE BEBE</td>
      <td><input type="text" name="inputs[0][qtd_unitaria]" value="1" size="5" /></td>
      <td><input type="text" id="preco_unitario[]" name="inputs[0][preco_unitario]" value="12.00" size="5" readonly="readonly" /></td>
      <td><input type="text" id="preco_total[]" name="inputs[0][preco_total]" value="12.00" size="5" readonly="readonly" /></td>
      <td><button type="button" id="vendas_del">×</button></td>
    </tr>
    <tr>
      <td>1</td>
      <td>REF002</td>
      <td>BOLSA ROUPAS MISTA CRIANCA</td>
      <td><input type="text" name="inputs[1][qtd_unitaria]" value="1" size="5" /></td>
      <td><input type="text" id="preco_unitario[]" name="inputs[1][preco_unitario]" value="17.00" size="5" readonly="readonly" /></td>
      <td><input type="text" id="preco_total[]" name="inputs[1][preco_total]" value="17.00" size="5" readonly="readonly" /></td>
      <td><button type="button" id="vendas_del">×</button></td>
    </tr>                     
    <tr>
      <td>1</td>
      <td>REF004</td>
      <td>BOLSA DE ROUPAS DE BEBE</td>
      <td><input type="text" name="inputs[0][qtd_unitaria]" value="1" size="5" /></td>
      <td><input type="text" id="preco_unitario[]" name="inputs[0][preco_unitario]" value="12.00" size="5" readonly="readonly" /></td>
      <td><input type="text" id="preco_total[]" name="inputs[0][preco_total]" value="12.00" size="5" readonly="readonly" /></td>
      <td><button type="button" id="vendas_del">×</button></td>
    </tr>
    <tr>
      <td>1</td>
      <td>REF002</td>
      <td>BOLSA ROUPAS MISTA CRIANCA</td>
      <td><input type="text" name="inputs[1][qtd_unitaria]" value="1" size="5" /></td>
      <td><input type="text" id="preco_unitario[]" name="inputs[1][preco_unitario]" value="17.00" size="5" readonly="readonly" /></td>
      <td><input type="text" id="preco_total[]" name="inputs[1][preco_total]" value="17.00" size="5" readonly="readonly" /></td>
      <td><button type="button" id="vendas_del">×</button></td>
    </tr>                     
    <tr>
      <td>1</td>
      <td>REF004</td>
      <td>BOLSA DE ROUPAS DE BEBE</td>
      <td><input type="text" name="inputs[0][qtd_unitaria]" value="1" size="5" /></td>
      <td><input type="text" id="preco_unitario[]" name="inputs[0][preco_unitario]" value="12.00" size="5" readonly="readonly" /></td>
      <td><input type="text" id="preco_total[]" name="inputs[0][preco_total]" value="12.00" size="5" readonly="readonly" /></td>
      <td><button type="button" id="vendas_del">×</button></td>
    </tr>
    <tr>
      <td>1</td>
      <td>REF002</td>
      <td>BOLSA ROUPAS MISTA CRIANCA</td>
      <td><input type="text" name="inputs[1][qtd_unitaria]" value="1" size="5" /></td>
      <td><input type="text" id="preco_unitario[]" name="inputs[1][preco_unitario]" value="17.00" size="5" readonly="readonly" /></td>
      <td><input type="text" id="preco_total[]" name="inputs[1][preco_total]" value="17.00" size="5" readonly="readonly" /></td>
      <td><button type="button" id="vendas_del">×</button></td>
    </tr>
    <tr>
      <td>1</td>
      <td>REF004</td>
      <td>BOLSA DE ROUPAS DE BEBE</td>
      <td><input type="text" name="inputs[0][qtd_unitaria]" value="1" size="5" /></td>
      <td><input type="text" id="preco_unitario[]" name="inputs[0][preco_unitario]" value="12.00" size="5" readonly="readonly" /></td>
      <td><input type="text" id="preco_total[]" name="inputs[0][preco_total]" value="12.00" size="5" readonly="readonly" /></td>
      <td><button type="button" id="vendas_del">×</button></td>
    </tr>
    <tr>
      <td>1</td>
      <td>REF002</td>
      <td>BOLSA ROUPAS MISTA CRIANCA</td>
      <td><input type="text" name="inputs[1][qtd_unitaria]" value="1" size="5" /></td>
      <td><input type="text" id="preco_unitario[]" name="inputs[1][preco_unitario]" value="17.00" size="5" readonly="readonly" /></td>
      <td><input type="text" id="preco_total[]" name="inputs[1][preco_total]" value="17.00" size="5" readonly="readonly" /></td>
      <td><button type="button" id="vendas_del">×</button></td>
    </tr>
  </tbody>
</table> 

CSS


table { 
  margin-top:10px;
  width: 90%; 
  height:200px;
  border-collapse: collapse; 
}
/* Zebra striping */
tr:nth-of-type(odd) { 
  background: #eee; 
}
th { 
  background: #333; 
  color: white; 
  font-weight: bold; 
}
table tbody {
    height: 200px;
    overflow-y: scroll;
}
td, th { 
  padding: 6px; 
  border: 1px solid #ccc; 
  text-align: left; 
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Antes da tabela tenho uma COL, uma ROW e um container, aí complicou.

 

Por coincidência eu tava testando ainda agora este plugin rsrsrs, o problema é o auto-sizing das colunas ele ao invés de ajustar a largura, quebra a linha dendro da td, o jeito por enquanto vai ser usar width para as colunas, eu queria uma solução bem simples mas pelo visto vou ter que acabar usando o datatables mesmo porque vou precisar de algumas funcionalidades dele em outras tabelas.

 

Obrigado por enquanto! 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Por enquanto coloquei tamanho fixo nas colunas, se alguém quiser aqui está o fiddle: https://jsfiddle.net/k5f9wbsq/1/

 

O bom mesmo seria conseguir sem usar JS mas se não tiver outro jeito vou partir pro datatables.

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Compartilhando...
 

Para quem precisar usar tabelas responsivas em um template específico como foi o meu caso.

1 - Como o Fábio disse acima, se você tiver somente a tabela na página é só aplicar o "position:fixed" e o "overflow-y:scroll" no body da tabela e funciona de boa e o header fica fixo.

2- Datatables - Muito bom, cheio de recursos mas proporcionalmente aos recursos são as dificuldades em relação ao layout, tendo que usar uma série de parâmetros e recorrer a hacks em js para modificar certos elementos.

3-CSS e JS - foi o que eu utilizei para resolver meu problema, ao invés de usar tabela usei div´s mesmo e um pequeno hack para controlar o tamanho da tabela. 

 

Ficou responsivo e adaptável a qualquer layout.

Fiddle: https://jsfiddle.net/w9Lxubf9/1/

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por juliosonic
      Boa noite..
      Estou desenvolvendo um site de https://www.maithunatantra.com.br/ e estou com um duvida sobre o menu de navegação da versão mobile.
      O menu que tem o dropdown "Terapeutas" e "Terapias" quando clico em cima ele expande como deve ser, mas quando clico denovo para recolher os submenus
      nao acontece nada.. segue o trecho do codigo do menu..
      <div class="collapse navbar-collapse" id="navbarsExample09">             <ul class="navbar-nav ml-auto">               <li class="nav-item  active"><a class="nav-link" href="index.html">Home</a></li>               <li class="nav-item  active"><a class="nav-link" href="about-us.html">Quem Somos</a></li>               <li class="nav-item dropdown1">                     <a class="nav-link dropdown-toggle" data-toggle="dropdown1" href="#">Terapeutas</a>                     <ul class="dropdown-menu">                         <li><a class="dropdown-item" href="terapeuta-julio-cezar.html">Julio Cezar</a></li>                         <li><a class="dropdown-item" href="terapeuta-pamela-priscila.html">Pamela Priscila</a></li>                     </ul>                                    </li>               <li class="nav-item dropdown">                     <a class="nav-link dropdown-toggle" data-toggle="dropdown1" href="#">Terapias</a>                     <ul class="dropdown-menu" aria-labelledby="dropdown01">                         <li><a class="dropdown-item" href="o-que-e-reiki.html">O que é Reiki</a></li>                         <li><a class="dropdown-item" href="beneficios-reiki.html">Benefícios do Reiki</a></li>                         <li><a class="dropdown-item" href="principios-reiki.html">Princípios do Reiki</a></li>                         <li><a class="dropdown-item" href="animais-reiki.html">Reiki em Animais</a></li>                         <li><a class="dropdown-item" href="animais-reiki.html">Estudos Sobre Reiki</a></li>                         <li><a class="dropdown-item" href="terapia-massagem-tantrica.html">Terapia Tântrica</a></li>                     </ul>               </li>               <li class="nav-item  active"><a class="nav-link" href="blog.html">Blog</a></li>                <li class="nav-item"><a class="nav-link" href="contato.html">Contato</a></li>             </ul>         </div>  
      Massagem Tantrica em Curitiba
      Tantra Curitiba
      Massagem Tântrica
      Tantra
      Julio Darshan

      Obrigado
      Att
      Julio Cezar
       
       
       
    • Por Felipe Medeiros
      Bom, criei um tema filho e o que aprendi é que para alterar qualquer coisa do tema filho eu preciso copiar o arquivo do tema pai o colocar dentro da pasta do tema filho.
       
      No meu caso, estou usando o tema "Astra" bem famosinho. O arquivo css que quero modificar não está dentro da pasta do tema pai, está em "wp-content/uploads/uag-plugin/assets/0/uag-css-10.css" sendo que o diretorio do tema pai é "wp-content/themes/Astra"
       
      O problema é o seguinte, preciso modificar a barra de pesquisa da pagina inicial, porem o inspetor de elementos do chrome ta acusando que esse arquivo é o responsavel por estilizar a barra de pesquisa. Será que isso tem a ver com "Cache de objetos", eu sei que o plugin liteSpeed Cache, AMP, Rank Math, todos eles tem essas paradas de criar arquivos css e js para tornar o site mais rapido.
    • Por Alessandro Bodão
      Fala galerinha, 
       
      Tenho um container com um título (h1) no cabeçalho do meu site, esse container ocupa metade da tela (50vw), e eu gostaria que esse título ocupasse toda a largura desse container, independente do seu tamanho ou do tamanho do monitor, de forma com que a palavra tenha exactamente o mesmo tamanho do container (vou anexar uma foto de exemplo). Já tentei todos os valores pra essa h1, como % e vw... mas nada parece fazer sentido.
       
       

    • Por FabianoSouza
      Gente, tenho as TRs da minha tabele já com os cantos arredondados (através das TDs first-child e last-child). Fiz dessa forma porque desconheço uma maneira de aplicar radius diretamente na TR.
       
      O problema é que ao colorir a TR com o over do CSS, perde-se a formatação do border radius das TDs e exibe a TR com os cantos quadrados.
       
      Preciso que os cantos fiquem arredondados mesmo ao passar o mouse sobre a TR.
       
      Como resolvo isso?
    • Por viniciusfroner
      Tenho um pequeno sistema de envio, estou utilizando o "PHPMailerAutoload". Após o usuário inserir as informações e clicar em enviar a mensagem é enviada com sucesso, o único problema é que apresentado ao usuário a seguinte mensagem:
      if ($enviado){ echo "E-mail enviado com sucesso!"; } else { echo "Não foi possível enviar o e-mail."; echo "<b>Informações do erro:</b> " . $msg->ErrorInfo; } Acabei procurando e não achei como posso remover a mensagem "Error:"
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.