Estou procurando uma solução CSS / Javascript para o meu problema de rolagem de página HTML.
Eu tenho três divs que contêm uma div, um cabeçalho e uma div wrapper,
Preciso de uma barra de rolagem vertical na div do wrapper, a altura deve ser automática ou 100% com base no conteúdo.
O cabeçalho deve ser fixo, e eu não quero a barra de rolagem geral, por isso forneci overflow:hidden
na tag body,
Eu preciso da barra de rolagem vertical na minha div wrapper. Como posso consertar isso?
HTML
<div id="container">
<div class="header"></div>
<div class="wrapper">
<p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Vivamus porta tortor sed metus. Nam pretium. Sed tempor. Integer ullamcorper, odio quis porttitor sagittis, nisl erat tincidunt massa, eu eleifend eros nibh sollicitudin est. Nulla dignissim. Mauris sollicitudin, arcu id sagittis placerat, tellus mauris egestas felis, eget interdum mi nibh vel lorem. Aliquam egestas hendrerit massa. Suspendisse sed nunc et lacus feugiat hendrerit. Nam cursus euismod augue. Aenean vehicula nisl eu quam luctus adipiscing. Nunc consequat justo pretium orci. Mauris hendrerit fermentum massa. Aenean consectetuer est ut arcu. Aliquam nisl massa, blandit at, accumsan sed, porta vel, metus. Duis fringilla quam ut eros.</p>
<!-- Lots more paragraphs-->
</div>
</div>
CSS
body{ margin:0; padding:0; overflow:hidden; height:100%}
#container { width:1000px; margin:0 auto;}
.header { width:1000px; height:30px; background-color:#dadada;}
.wrapper{ width:1000px; overflow:scroll; position:relative;}
Por favor, consulte este JS Fiddle
dislpay: fixed
... Não sei o que você está tentando fazer.A solução é adicionar
height:100%;
a todos os elementos pai do seu.wrapper-div
também. Assim:fonte
Se você adicionar altura na
.wrapper
aula, seu pergaminho está funcionando, sem oheight
pergaminho não está funcionando.Tente isso http://jsfiddle.net/ZcrFr/3/
CSS:
fonte
height:100%
Você não deu uma altura ao div. Portanto, ele se estenderá automaticamente quando mais conteúdo for adicionado. Dê uma altura fixa e as barras de rolagem aparecerão.
fonte
Se você definir uma altura estática para o cabeçalho, poderá usá-la em um cálculo para o tamanho do seu invólucro.
http://jsfiddle.net/ske5Lqyv/5/
Usando seu código de exemplo, você pode adicionar este CSS:
Ou você pode usar o flexbox para uma abordagem mais dinâmica http://jsfiddle.net/19zbs7je/3/
E se você quiser ficar ainda mais chique, dê uma olhada na minha resposta a esta pergunta https://stackoverflow.com/a/52416148/1513083
fonte
Eu editei o seu: Fiddle
Dar à tag html uma altura de 100% é a solução. Também excluí a div do contêiner. Você não precisa disso quando seu layout permanece assim.
fonte
Eu queria comentar sobre @Ionica Bizau, mas não tenho reputação suficiente.
Para responder à sua pergunta sobre o código javascript:
O que você precisa fazer é obter a altura do elemento pai (menos quaisquer elementos que ocupam espaço) e aplicá-la aos elementos filhos.
A
janela de anotações pode ser substituída por ".container" se aquele não tiver filhos flutuantes ou tiver uma correção para obter a altura correta calculada. Esta solução usa jQuery.
fonte
Para Angular2 + Material2 + Sidenav, você precisará fazer o seguinte:
fonte
overflow:hidden
emcss
em caso de material2?no meu caso, apenas
height: 100vh
corrija o problema com o comportamento esperadofonte
Tente isto para uma barra de rolagem vertical:
fonte