Estoy buscando una solución CSS / Javascript para mi problema de desplazamiento de página HTML.
Tengo tres divs que contienen un div, un encabezado y un div contenedor,
Necesito una barra de desplazamiento vertical en el div contenedor, la altura debe ser automática o 100% según el contenido.
El encabezado debe estar arreglado y no quiero la barra de desplazamiento general, así que he dado overflow:hidden
en la etiqueta del cuerpo,
Necesito barra de desplazamiento vertical en mi envoltorio div. ¿Cómo puedo arreglar esto?
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;}
Consulte este JS Fiddle
dislpay: fixed
... No estoy seguro de lo que está tratando de hacer.La solución es agregar
height:100%;
a todos los elementos principales de su.wrapper-div
también. Entonces:fuente
Si agrega altura en
.wrapper
clase, su desplazamiento está funcionando, sinheight
desplazamiento no funciona.Pruebe esto http://jsfiddle.net/ZcrFr/3/
CSS:
fuente
height:100%
No le diste altura al div. Por lo que se estirará automáticamente cuando se agregue más contenido. Dale una altura fija y aparecerán las barras de desplazamiento.
fuente
Si establece una altura estática para su encabezado, puede usarla en un cálculo para el tamaño de su envoltorio.
http://jsfiddle.net/ske5Lqyv/5/
Usando su código de ejemplo, puede agregar este CSS:
O puede usar flexbox para un enfoque más dinámico http://jsfiddle.net/19zbs7je/3/
Y si desea ser aún más elegante, eche un vistazo a mi respuesta a esta pregunta https://stackoverflow.com/a/52416148/1513083
fuente
Edité tu: Fiddle
Darle a la etiqueta html una altura del 100% es la solución. También eliminé el contenedor div. No lo necesita cuando su diseño se mantiene así.
fuente
Quería comentar sobre @Ionica Bizau, pero no tengo suficiente reputación.
Para dar una respuesta a su pregunta sobre el código JavaScript:
Lo que debe hacer es obtener la altura del elemento principal (menos los elementos que ocupan espacio) y aplicarla a los elementos secundarios.
La
ventana de la nota podría ser reemplazada por ".container" si ese no tiene hijos flotantes o tiene una solución para calcular la altura correcta. Esta solución usa jQuery.
fuente
Para Angular2 + Material2 + Sidenav, deberá hacer lo siguiente:
fuente
overflow:hidden
encss
en el caso de Material2?en mi caso, solo
height: 100vh
soluciono el problema con el comportamiento esperadofuente
Pruebe esto para una barra de desplazamiento vertical:
fuente