1

Here's a box in the center of the viewport. As long as the box is less than its container's height it's shown in the vertical center. When the box is taller it's top is hidden and cannot be scrolled to.

    <!DOCTYPE html>
    <html style="height: 100%; ">
    <body style="height: 100%; ">
        <div style="display: flex;  justify-content: center; height: 100%;   ">
            <div style="align-self: center;  ">
                <div style="width:10vw; border: 3px solid blue; margin:10px; background-color:fuchsia;">abc</div>
            </div>
        </div>
    </body>
    </html>

Now change the div's text to be long:

<!DOCTYPE html>
<html style="height: 100%; ">
<body style="height: 100%; ">
    <div style="display: flex;  justify-content: center; height: 100%;   ">
        <div style="align-self: center;  ">
            <div style="width:10vw; border: 3px solid blue; margin:10px; background-color:fuchsia;">abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc</div>
        </div>
    </div>
</body>
</html>

and the top of the box cannot be seen, nor scrolled to.

How do I get it to show the top part of the box and let me scroll to the rest if it's taller than its container, and yet center it vertically if it's shorter? The method should NOT assume a known height of the content. The content might be unknown text.

ispiro
  • 26,556
  • 38
  • 136
  • 291

1 Answers1

0

How about overflow-y: auto;?

<!DOCTYPE html>
<html style="height: 100%; ">
<body style="height: 100%; ">
    <div style="display: flex;  justify-content: center; height: 100%; overflow-y: auto;">
        <div style="align-self: center;  ">
            <div style="width:10vw; border: 3px solid blue; margin:10px; background-color:fuchsia;">abc</div>
        </div>
    </div>
</body>
</html>
romek
  • 615
  • 1
  • 6
  • 13