Eu tenho um div
posicionado fixed
no lado esquerdo de uma página da web, contendo menus e links de navegação. Não tem altura definida a partir do css, o conteúdo determina a altura, a largura é fixa. O problema é que, se o conteúdo for muito, o div
será maior do que a altura da janela e parte do conteúdo não ficará visível. (Rolar a janela não ajuda, já que a posição é fixed
e div
não rola.)
Eu tentei definir overflow-y:auto;
mas também não ajudou, o div não parece notar que parte dele está fora da janela.
Como posso tornar seu conteúdo rolável apenas, se necessário, se ele div
pendurar para fora da janela?
html
css
css-position
Mkoch
fonte
fonte
calc()
é uma tecnologia experimental e pode resultar em resultados inesperados . Se você optar por usá-lo, certifique-se de conhecer seu público-alvo e teste-o nesses navegadores.Respostas:
Você provavelmente não pode. Aqui está algo que chega perto. Você não conseguirá que o conteúdo flua em torno dele se houver espaço abaixo.
http://jsfiddle.net/ThnLk/1289
.stuck { position: fixed; top: 10px; left: 10px; bottom: 10px; width: 180px; overflow-y: scroll; }
Você também pode fazer uma porcentagem de altura:
http://jsfiddle.net/ThnLk/1287/
.stuck { max-height: 100%; }
fonte
O link abaixo irá demonstrar como eu fiz isso. Não é muito difícil - basta usar algum desenvolvedor front-end inteligente !!
<div style="position: fixed; bottom: 0%; top: 0%;"> <div style="overflow-y: scroll; height: 100%;"> Menu HTML goes in here </div> </div>
http://jsfiddle.net/RyanBrackett/b44Zn/
fonte
position: fixed; bottom: 0%; top: 0%; overflow: scroll; height: 100vh;
tornará o div externo capaz de rolar com base no conteúdo.Você provavelmente precisa de um div interno. Com css é:
.fixed { position: fixed; top: 0; left: 0; bottom: 0; overflow-y: auto; width: 200px; // your value } .inner { min-height: 100%; }
fonte
Experimente isto na sua posição: elemento fixo.
overflow-y: scroll; max-height: 100%;
fonte
Isso é absolutamente viável com alguma mágica do flexbox. Dê uma olhada nesta caneta .
Você precisa de css assim:
aside { background-color: cyan; position: fixed; max-height: 100vh; width: 25%; display: flex; flex-direction: column; } ul { overflow-y: scroll; } section { width: 75%; float: right; background: orange; }
Isso funcionará no IE10 +
fonte
Aqui está a solução HTML e CSS pura .
Criamos uma caixa container para navbar com posição: fixa; altura: 100%;
Em seguida, criamos uma caixa interna com altura: 100%; overflow-y: scroll;
Em seguida, colocamos o conteúdo dentro dessa caixa.
Aqui está o código:
.nav-box{ position: fixed; border: 1px solid #0a2b1d; height:100%; } .inner-box{ width: 200px; height: 100%; overflow-y: scroll; border: 1px solid #0A246A; } .tabs{ border: 3px solid chartreuse; color:darkred; } .content-box p{ height:50px; text-align:center; }
<div class="nav-box"> <div class="inner-box"> <div class="tabs"><p>Navbar content Start</p></div> <div class="tabs"><p>Navbar content</p></div> <div class="tabs"><p>Navbar content</p></div> <div class="tabs"><p>Navbar content</p></div> <div class="tabs"><p>Navbar content</p></div> <div class="tabs"><p>Navbar content</p></div> <div class="tabs"><p>Navbar content</p></div> <div class="tabs"><p>Navbar content</p></div> <div class="tabs"><p>Navbar content</p></div> <div class="tabs"><p>Navbar content</p></div> <div class="tabs"><p>Navbar content</p></div> <div class="tabs"><p>Navbar content End</p></div> </div> </div> <div class="content-box"> <p>Lorem Ipsum</p> <p>Lorem Ipsum</p> <p>Lorem Ipsum</p> <p>Lorem Ipsum</p> <p>Lorem Ipsum</p> <p>Lorem Ipsum</p> <p>Lorem Ipsum</p> <p>Lorem Ipsum</p> <p>Lorem Ipsum</p> <p>Lorem Ipsum</p> <p>Lorem Ipsum</p> <p>Lorem Ipsum</p> </div>
Link para jsFiddle:
fonte
Estou apresentando isso como uma solução alternativa, em vez de uma solução. Isso pode não funcionar o tempo todo. Fiz assim porque estou criando uma página HTML muito básica, para uso interno, em um ambiente muito bizarro. Eu sei que existem bibliotecas como MaterializeCSS que podem fazer barras de navegação realmente boas. (Eu ia usá-los, mas não funcionou com meu ambiente.)
<div id="nav" style="position:fixed;float:left;overflow-y:hidden;width:10%;"></div> <div style="margin-left:10%;float:left;overflow-y:auto;width:60%;word-break:break-all;word-wrap:break-word;" id="content"></div>
fonte
Adicione isso ao seu código para altura fixa e adicione um pergaminho.
.fixedbox { max-height: auto; overflow-y: scroll; }
fonte
max-height
não pode serauto
developer.mozilla.org/en-US/docs/Web/CSS/max-heightPara o seu propósito, você pode apenas usar
position: absolute; top: 0%;
e ainda pode ser redimensionável, rolável e responsivo.
fonte