Bootstrap how to make navbar remain outside while content has vh-100

Viewed 22

i have simple columns that are made to remain on viewport. Whatever you do, it will stay on viewport (zoom-in-out, they all stay on screen without scrolling). For now, my navbar is attached to middle column, but if i put it outside, the page become scrollable. The code i will provide is fully working, except that i want navbar to be outside, for example:

THIS

--------------------
col1 | navbar | col3
     |  col2  |
--------------------

INTO THIS

--------------------
      navbar
col1 | col2 | col3
--------------------

So all that needs to be on one viewport (without scrolling just like in example code bellow). I guess columns stays in row, but navbar outside of it and still to be able to use vh-100 all together.

.bg-darkblue{
    background-color: #012832;
}

#testbox{
    overflow-y: scroll;
    overflow-x: hidden;
}
<html>
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css" integrity="sha384-1BmE4kWBq78iYhFldvKuhfTAU6auU8tT94WrHftjDbrCEXSU1oBoqyl2QvZ6jIW3" crossorigin="anonymous">
</head>
<body>
<div class="container-fluid bg-light p-0">
    <div class="row m-0">
        <div class="col-sm-1 p-0">
            <div class="card rounded-0">
                <div class="card-body p-0">
                    col-left
                </div>
            </div>
        </div>
        <div class="col-sm col-auto p-0 d-flex flex-column vh-100 border">
            <nav class="navbar navbar-expand-lg navbar-light p-0 bg-darkblue">
                <div class="container-fluid">
                    <a class="navbar-brand text-light" href="/">navbar</a>
                    <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarText" aria-controls="navbarText" aria-expanded="false" aria-label="Toggle navigation">
                        <span class="navbar-toggler-icon"></span>
                    </button>
                </div>
            </nav>
            <div id="testbox" class="flex-fill d-flex flex-column-reverse">
                <div class="card rounded-0">
                    <div class="card-body p-0">
                        <p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Vero perspiciatis veniam magnam! Sed rerum repellat ab illum consectetur culpa illo delectus, excepturi perferendis aspernatur officiis distinctio aliquam consequatur quisquam fuga.</p>
                        <p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Vero perspiciatis veniam magnam! Sed rerum repellat ab illum consectetur culpa illo delectus, excepturi perferendis aspernatur officiis distinctio aliquam consequatur quisquam fuga.</p>
                        <p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Vero perspiciatis veniam magnam! Sed rerum repellat ab illum consectetur culpa illo delectus, excepturi perferendis aspernatur officiis distinctio aliquam consequatur quisquam fuga.</p>
                        <p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Vero perspiciatis veniam magnam! Sed rerum repellat ab illum consectetur culpa illo delectus, excepturi perferendis aspernatur officiis distinctio aliquam consequatur quisquam fuga.</p>
                        <p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Vero perspiciatis veniam magnam! Sed rerum repellat ab illum consectetur culpa illo delectus, excepturi perferendis aspernatur officiis distinctio aliquam consequatur quisquam fuga.</p>
                        <p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Vero perspiciatis veniam magnam! Sed rerum repellat ab illum consectetur culpa illo delectus, excepturi perferendis aspernatur officiis distinctio aliquam consequatur quisquam fuga.</p>
                        <p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Vero perspiciatis veniam magnam! Sed rerum repellat ab illum consectetur culpa illo delectus, excepturi perferendis aspernatur officiis distinctio aliquam consequatur quisquam fuga.</p>
                        <p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Vero perspiciatis veniam magnam! Sed rerum repellat ab illum consectetur culpa illo delectus, excepturi perferendis aspernatur officiis distinctio aliquam consequatur quisquam fuga.</p>
                        <p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Vero perspiciatis veniam magnam! Sed rerum repellat ab illum consectetur culpa illo delectus, excepturi perferendis aspernatur officiis distinctio aliquam consequatur quisquam fuga.</p>
                        <p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Vero perspiciatis veniam magnam! Sed rerum repellat ab illum consectetur culpa illo delectus, excepturi perferendis aspernatur officiis distinctio aliquam consequatur quisquam fuga.</p>
                        <p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Vero perspiciatis veniam magnam! Sed rerum repellat ab illum consectetur culpa illo delectus, excepturi perferendis aspernatur officiis distinctio aliquam consequatur quisquam fuga.</p>
                        <p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Vero perspiciatis veniam magnam! Sed rerum repellat ab illum consectetur culpa illo delectus, excepturi perferendis aspernatur officiis distinctio aliquam consequatur quisquam fuga.</p>
                        <p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Vero perspiciatis veniam magnam! Sed rerum repellat ab illum consectetur culpa illo delectus, excepturi perferendis aspernatur officiis distinctio aliquam consequatur quisquam fuga.</p>
                        <p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Vero perspiciatis veniam magnam! Sed rerum repellat ab illum consectetur culpa illo delectus, excepturi perferendis aspernatur officiis distinctio aliquam consequatur quisquam fuga.</p>
                        <p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Vero perspiciatis veniam magnam! Sed rerum repellat ab illum consectetur culpa illo delectus, excepturi perferendis aspernatur officiis distinctio aliquam consequatur quisquam fuga.</p>
                        <p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Vero perspiciatis veniam magnam! Sed rerum repellat ab illum consectetur culpa illo delectus, excepturi perferendis aspernatur officiis distinctio aliquam consequatur quisquam fuga.</p>
                        <p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Vero perspiciatis veniam magnam! Sed rerum repellat ab illum consectetur culpa illo delectus, excepturi perferendis aspernatur officiis distinctio aliquam consequatur quisquam fuga.</p>
                    </div>
                </div>
            </div>
            <div class="card-footer text-muted">
                <form id="test-form" class="m-0">
                    <div class="row">
                        <div class="col">
                            <input type="text" id="test-input" class="form-control rounded-pill" autocomplete="off" placeholder="Type something...">
                        </div>
                    </div>
                </form>
            </div>
        </div>
        <div class="col-sm-2 p-0">
            <div class="card rounded-0">
                <div class="card-body p-0">
                    <ul class="list-group list-group-flush">
                        col-right
                    </ul>
                </div>
            </div>
        </div>
    </div>
</div>
</body>
</html>

1 Answers

Just move your navbar outside of container and declare new class vh-100-navbar-out:

.bg-darkblue{
    background-color: #012832;
}

#testbox{
    overflow-y: scroll;
    overflow-x: hidden;
}

.vh-100-navbar-out {
  height: calc(100vh - 2.5rem);
}
<html>
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css" integrity="sha384-1BmE4kWBq78iYhFldvKuhfTAU6auU8tT94WrHftjDbrCEXSU1oBoqyl2QvZ6jIW3" crossorigin="anonymous">
</head>
<body>
<nav class="navbar navbar-expand-lg navbar-light p-0 bg-darkblue">
    <div class="container-fluid">
        <a class="navbar-brand text-light" href="/">navbar</a>
        <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarText" aria-controls="navbarText" aria-expanded="false" aria-label="Toggle navigation">
            <span class="navbar-toggler-icon"></span>
        </button>
    </div>
</nav>
<div class="container-fluid bg-light p-0">
    <div class="row m-0">
        <div class="col-sm-1 p-0">
            <div class="card rounded-0">
                <div class="card-body p-0">
                    col-left
                </div>
            </div>
        </div>
        <div class="col-sm col-auto p-0 d-flex flex-column vh-100-navbar-out border">
            <div id="testbox" class="flex-fill d-flex flex-column-reverse">
                <div class="card rounded-0">
                    <div class="card-body p-0">
                        <p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Vero perspiciatis veniam magnam! Sed rerum repellat ab illum consectetur culpa illo delectus, excepturi perferendis aspernatur officiis distinctio aliquam consequatur quisquam fuga.</p>
                        <p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Vero perspiciatis veniam magnam! Sed rerum repellat ab illum consectetur culpa illo delectus, excepturi perferendis aspernatur officiis distinctio aliquam consequatur quisquam fuga.</p>
                        <p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Vero perspiciatis veniam magnam! Sed rerum repellat ab illum consectetur culpa illo delectus, excepturi perferendis aspernatur officiis distinctio aliquam consequatur quisquam fuga.</p>
                        <p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Vero perspiciatis veniam magnam! Sed rerum repellat ab illum consectetur culpa illo delectus, excepturi perferendis aspernatur officiis distinctio aliquam consequatur quisquam fuga.</p>
                        <p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Vero perspiciatis veniam magnam! Sed rerum repellat ab illum consectetur culpa illo delectus, excepturi perferendis aspernatur officiis distinctio aliquam consequatur quisquam fuga.</p>
                        <p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Vero perspiciatis veniam magnam! Sed rerum repellat ab illum consectetur culpa illo delectus, excepturi perferendis aspernatur officiis distinctio aliquam consequatur quisquam fuga.</p>
                        <p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Vero perspiciatis veniam magnam! Sed rerum repellat ab illum consectetur culpa illo delectus, excepturi perferendis aspernatur officiis distinctio aliquam consequatur quisquam fuga.</p>
                        <p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Vero perspiciatis veniam magnam! Sed rerum repellat ab illum consectetur culpa illo delectus, excepturi perferendis aspernatur officiis distinctio aliquam consequatur quisquam fuga.</p>
                        <p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Vero perspiciatis veniam magnam! Sed rerum repellat ab illum consectetur culpa illo delectus, excepturi perferendis aspernatur officiis distinctio aliquam consequatur quisquam fuga.</p>
                        <p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Vero perspiciatis veniam magnam! Sed rerum repellat ab illum consectetur culpa illo delectus, excepturi perferendis aspernatur officiis distinctio aliquam consequatur quisquam fuga.</p>
                        <p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Vero perspiciatis veniam magnam! Sed rerum repellat ab illum consectetur culpa illo delectus, excepturi perferendis aspernatur officiis distinctio aliquam consequatur quisquam fuga.</p>
                        <p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Vero perspiciatis veniam magnam! Sed rerum repellat ab illum consectetur culpa illo delectus, excepturi perferendis aspernatur officiis distinctio aliquam consequatur quisquam fuga.</p>
                        <p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Vero perspiciatis veniam magnam! Sed rerum repellat ab illum consectetur culpa illo delectus, excepturi perferendis aspernatur officiis distinctio aliquam consequatur quisquam fuga.</p>
                        <p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Vero perspiciatis veniam magnam! Sed rerum repellat ab illum consectetur culpa illo delectus, excepturi perferendis aspernatur officiis distinctio aliquam consequatur quisquam fuga.</p>
                        <p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Vero perspiciatis veniam magnam! Sed rerum repellat ab illum consectetur culpa illo delectus, excepturi perferendis aspernatur officiis distinctio aliquam consequatur quisquam fuga.</p>
                        <p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Vero perspiciatis veniam magnam! Sed rerum repellat ab illum consectetur culpa illo delectus, excepturi perferendis aspernatur officiis distinctio aliquam consequatur quisquam fuga.</p>
                        <p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Vero perspiciatis veniam magnam! Sed rerum repellat ab illum consectetur culpa illo delectus, excepturi perferendis aspernatur officiis distinctio aliquam consequatur quisquam fuga.</p>
                    </div>
                </div>
            </div>
            <div class="card-footer text-muted">
                <form id="test-form" class="m-0">
                    <div class="row">
                        <div class="col">
                            <input type="text" id="test-input" class="form-control rounded-pill" autocomplete="off" placeholder="Type something...">
                        </div>
                    </div>
                </form>
            </div>
        </div>
        <div class="col-sm-2 p-0">
            <div class="card rounded-0">
                <div class="card-body p-0">
                    <ul class="list-group list-group-flush">
                        col-right
                    </ul>
                </div>
            </div>
        </div>
    </div>
</div>
</body>
</html>

Related