How to create a DIV that scrolls using a browser scrollbar containing flexible content

I am creating a site with interactive content that produces a fixed div width with additional information. This information can be quite long and needs to be scrolled vertically over a static background. (e.g. similar to Pintrest). I have a basic scroll action, but I'm having trouble developing how to set the height of my DIV content so that it wraps all the content correctly. Because this means that the content just drains from the bottom of the DIV.

I brought this to a simple example.

<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8" /> <title>Scroller Test</title> <style> * { margin: 0; } html, body { height: 100%; background-color: #7A7A7A; overflow: hidden; } #scroller { position: fixed; top: 0px; left: 0px; bottom: 0px; right: 0px; overflow-x: none; overflow-y: scroll; } .infobox { position: absolute; top: 0px; left: 100px; width: 525px; height: 100%; z-index: 100; background-color: #fff; overflow: visible; display: block; padding: 0; margin: 50px 0px 50px 0px; } .infobox-content { position: absolute; width: 475px; margin: 0px 25px 0px 25px; } </style> </head> <body> <div id="scroller"> <div class="infobox"> <div class="infobox-content"> <h2>Heading</h2> <p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Typi non habent claritatem insitam; est usus legentis in iis qui facit eorum claritatem. Investigationes demonstraverunt lectores legere me lius quod ii legunt saepius. Claritas est etiam processus dynamicus, qui sequitur mutationem consuetudium lectorum. Mirum est notare quam littera gothica, quam nunc putamus parum claram, anteposuerit litterarum formas humanitatis per seacula quarta decima et quinta decima. Eodem modo typi, qui nunc nobis videntur parum clari, fiant sollemnes in futurum.</p> <p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Typi non habent claritatem insitam; est usus legentis in iis qui facit eorum claritatem. Investigationes demonstraverunt lectores legere me lius quod ii legunt saepius. Claritas est etiam processus dynamicus, qui sequitur mutationem consuetudium lectorum. Mirum est notare quam littera gothica, quam nunc putamus parum claram, anteposuerit litterarum formas humanitatis per seacula quarta decima et quinta decima. Eodem modo typi, qui nunc nobis videntur parum clari, fiant sollemnes in futurum.</p> <p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Typi non habent claritatem insitam; est usus legentis in iis qui facit eorum claritatem. Investigationes demonstraverunt lectores legere me lius quod ii legunt saepius. Claritas est etiam processus dynamicus, qui sequitur mutationem consuetudium lectorum. Mirum est notare quam littera gothica, quam nunc putamus parum claram, anteposuerit litterarum formas humanitatis per seacula quarta decima et quinta decima. Eodem modo typi, qui nunc nobis videntur parum clari, fiant sollemnes in futurum.</p> <p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Typi non habent claritatem insitam; est usus legentis in iis qui facit eorum claritatem. Investigationes demonstraverunt lectores legere me lius quod ii legunt saepius. Claritas est etiam processus dynamicus, qui sequitur mutationem consuetudium lectorum. Mirum est notare quam littera gothica, quam nunc putamus parum claram, anteposuerit litterarum formas humanitatis per seacula quarta decima et quinta decima. Eodem modo typi, qui nunc nobis videntur parum clari, fiant sollemnes in futurum.</p> </div> </div> </div> </body> </html> 

The result is: Example of what's going wrong.

If I leave height , my DIV has no height, so no white background is displayed at all. Obviously, I can't just set a specific number of pixels for the height. I tried to adjust margins, indents, etc., all to no avail. Obviously, I am missing something very simple, because I saw how it was done elsewhere. Looking through the CSS of other sites, I do not see what I am doing wrong.

Note. In this example, I have only simple content div in the main "infobox" section, but on the full site there are other things, a gallery of images, buttons, etc., which will also fall into the "infobox".

+4
source share
2 answers

Add the following property to .infobox :

 min-height: 100%; 

Or you can just completely remove the height properties. But height: 100% will not work (at least in the fiddle), because it sets the height relative to body / html

And then change position: absolute in .infobox-content to:

  position: relative; 

Thus, the height of .infobox will be "stretched" using .infobox-content

http://jsfiddle.net/94B7H/2/

+3
source

If you want to set the height of .info-box to the same as in .infobox-content . Change position:absolute to position:relative to .infobox-content and remove height:100% from .info-box

here is the fiddle for you: http://jsfiddle.net/wandarkaf/UBJAZ/

+2
source

Source: https://habr.com/ru/post/1446877/


All Articles