Eu tenho um muito grande table
na minha página. Então, decidi colocar uma barra de rolagem horizontal na parte inferior da mesa. Mas eu gostaria que essa barra de rolagem também estivesse em cima da mesa.
O que tenho no modelo é o seguinte:
<div style="overflow:auto; width:100%; height:130%">
<table id="data" style="width:100%">...</table>
</div>
Isso é possível apenas em HTML e CSS?
javascript
jquery
html
css
psoares
fonte
fonte
Respostas:
Para simular uma segunda barra de rolagem horizontal na parte superior de um elemento, coloque um "manequim"
div
acima do elemento que possui rolagem horizontal, alta o suficiente para uma barra de rolagem. Em seguida, anexe manipuladores do evento "scroll" para o elemento dummy e o elemento real, para sincronizar o outro elemento quando qualquer barra de rolagem for movida. O elemento fictício parecerá uma segunda barra de rolagem horizontal acima do elemento real.Para um exemplo ao vivo , veja este violino
Aqui está o código :
HTML:
CSS:
JS:
fonte
Tente usar o
jquery.doubleScroll
plugin :jQuery:
CSS:
HTML:
fonte
Primeiro de tudo, ótima resposta, @ StanleyH. Se alguém estiver se perguntando como criar o contêiner de rolagem dupla com largura dinâmica:
css
js
html
demonstração
http://jsfiddle.net/simo/67xSL/
fonte
$('.div1').width( $('.div1')[0].scrollWidth)
para obter a largura real de rolagem do conteúdo, útil quando você não estiver usando especificamente um contêiner como uma tabela. @simo companheiro de esforço impressionante.Sem JQuery (2017)
Como você pode não precisar do JQuery, eis uma versão funcional do Vanilla JS com base na resposta @StanleyH:
fonte
Você pode usar um plugin jQuery que fará o trabalho para você:
O plugin irá lidar com toda a lógica para você.
fonte
A resposta de StanleyH foi excelente, mas teve um erro infeliz: clicar na área sombreada da barra de rolagem não salta mais para a seleção em que você clica. Em vez disso, o que você obtém é um incremento muito pequeno e um tanto irritante na posição da barra de rolagem.
Testado: 4 versões do Firefox (100% afetado), 4 versões do Chrome (50% afetadas).
Aqui está meu violão . Você pode contornar isso com uma var on / off (true / false) que permite que apenas um evento onScroll () seja acionado por vez:
Comportamento do problema com resposta aceita:
Comportamento realmente desejado:
Então, por que isso acontece? Se você executar o código, verá que wrapper1 chama scrollLeft de wrapper2 e wrapper2 chama scrollLeft de wrapper1 e repete isso infinitamente, portanto, temos um problema de loop infinito. Ou melhor: a rolagem contínua do usuário entra em conflito com a chamada de rolagem do wrapperx, ocorre um conflito de eventos e o resultado final é não pular nas barras de rolagem.
Espero que isso ajude alguém!
fonte
Vincular os scrollers funcionou, mas da maneira como está escrito, ele cria um loop que torna a rolagem lenta na maioria dos navegadores se você clicar na parte da barra de rolagem mais clara e segurá-la (não ao arrastar o scroller).
Eu o consertei com uma bandeira:
fonte
uma solução apenas em javascript, baseada nas respostas @HoldOffHunger e @bobince
.
fonte
Baseado na solução @StanleyH, criei uma diretiva AngularJS , demo no jsFiddle .
Fácil de usar:
Para desenvolvedores do AngularJS
fonte
Tanto quanto sei, isso não é possível com HTML e CSS.
fonte
Na baunilha Javascript / Angular, você pode fazer o seguinte:
HTML:
CSS:
fonte
Expandindo a resposta de StanleyH e tentando encontrar o mínimo necessário, eis o que eu implementei:
JavaScript (chamado uma vez de algum lugar como
$(document).ready()
):HTML (observe que as larguras mudarão o comprimento da barra de rolagem):
É isso aí.
fonte
para todos os fãs angulares / nativos, implementando a resposta do @ simo
HTML (sem alteração)
CSS (sem alteração, largura: 90% é meu desejo)
JS (como
onload
) oungAfterViewChecked
(todosas
são paraTypeScript
)fonte
Se você estiver usando o iscroll.js no navegador da Web ou no navegador móvel, tente:
fonte
Uma diretiva AngularJs para conseguir isso: Para usá-lo, adicione a classe css double-hscroll ao seu elemento. Você precisará de jQuery e AngularJs para isso.
fonte
Aqui está um exemplo para o VueJS
index.page
TOME NOTA no
height: 12px
.. eu fiz isso 12px por isso vai ser notado Usuários de Mac também. Mas w / windows, 0.1px é bom o suficientefonte
Há um problema com a direção da rolagem: rtl. Parece que o plugin não o suporta corretamente. Aqui está o violino: violino
Observe que ele funciona corretamente no Chrome, mas em todos os outros navegadores populares a direção da barra de rolagem superior permanece à esquerda.
fonte