0

I have a problem:

enter image description here

as you can see in the picture, the problem is, that the column doesn't take the full height. On the left side is what I got and on the right is what I want. Here is the source code which leads to the image on the left.

    <!DOCTYPE html>
    <html lang="en">
    <head>
      <title>Bootstrap Example</title>
      <meta charset="utf-8">
      <meta name="viewport" content="width=device-width, initial-scale=1">
      <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css">
      <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
      <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.16.0/umd/popper.min.js"></script>
      <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.2/js/bootstrap.min.js"></script>
    </head>
    <body>
    <div>
          <div class="row m-auto">
            <div class="col-md-12 p-0">
                <div>
                <nav class="navbar navbar-expand-lg navbar-light bg-light">
                    <a class="navbar-brand" href="#">
                        Navbar w/ text
              </a>
                    <button
                        class="navbar-toggler"
                        type="button"
                        data-toggle="collapse"
                        data-target="#navbarText"
                        aria-controls="navbarText"
                        aria-expanded="false"
                        aria-label="Toggle navigation"
                    >
                        <span class="navbar-toggler-icon"></span>
                    </button>
                    <div class="collapse navbar-collapse" id="navbarText">
                        <ul class="navbar-nav mr-auto">
                            <li class="nav-item active">
                                <a class="nav-link" href="#">
                                    Home <span class="sr-only">(current)</span>
                                </a>
                            </li>
                            <li class="nav-item">
                                <a class="nav-link" href="#">
                                    Features
                    </a>
                            </li>
                            <li class="nav-item">
                                <a class="nav-link" href="#">
                                    Pricing
                    </a>
                            </li>
                        </ul>
                        <span class="navbar-text">Navbar text with an inline element</span>
                    </div>
                </nav>
            </div>
              <div class="container-fluid">
                <div class="row">


                  <div class="col-md-4 bg-warning">
<!-- this is the left side -->
                            <div>
                      <div class="row m-1">
                        <div class="col-md-11">
                          Chats
                      </div>
                        <div class="col-md-1">
                          <i class="fas fa-plus-circle"></i>
                        </div>
                      </div>
                      <div class="row mb-2">
                        <div class="col-md-12">
                          <form class="form-inline" style={{ height: "0%", width: "100%", paddingLeft: "0", paddingRight: "0", paddingTop: "8px" }}>
                            <input class="form-control  mr-sm-1" style={{ width: "80%" }} type="search" placeholder="Suchen" aria-label="Search" />
                            <button class="btn btn-outline-success my-2 my-sm-0" type="submit">Suchen</button>
                          </form>
                        </div>
                      </div>
                      <div class="row">
                        <div class="col-md-12">
                          <div class="list-group">
                            <div>
                <a href="#" class="list-group-item list-group-item-action flex-column align-items-start" style={{marginTop: "7.5px", marginBottom: "7.5px"}}>
                    <div class="d-flex w-100 justify-content-between">
                        <h5 class="mb-1">List group item heading</h5>
                        <small>3 days ago</small>
                    </div>
                    <div class="row">
                        <div class="col-md-11">Donec id elit non mi porta...
                        </div>
                        <div class="col-md-1">
                            <span class="badge badge-primary badge-pill text-right">5</span>
                        </div>
                    </div>
                </a>
            </div>
                          </div>
                        </div>
                      </div>
                    </div>
                  </div>
                  <div class="col-md-8 bg-primary">
                      <div>
                <div class="row">
                    <div class="col-12 col-sm-12 col-md-12 col-lg-12 col-xl-12">
                        <div class="row">
                          <div class="col-12 col-sm-12 col-md-12 col-lg-12 col-xl-12 bg-success">
                              <div class="row">
                              <!-- it should be the full width but unfortunatelly a scrollbar appears because of this section right here... -->
                                  <div class="col-2 col-sm-2 col-md-2 col-lg-2 col-xl-2">
                                      <img src="..." class="image-head-chat" alt="Responsive image" />
                                  </div>

                                  <div class="col-8 col-sm-8 col-md-8 col-lg-8 col-xl-8">
                                      Text
                                  </div>

                                  <div class="col-2 col-sm-2 col-md-2 col-lg-2 col-xl-2">
                                      Icons
                                  </div>
                               </div>
                            </div>
                        </div>


                        <div class="row">
                            <div class="col-12 col-sm-12 col-md-12 col-lg-12 col-xl-12 bg-success">
<!-- Should be in the middle and full screen (like the area where you and another person have a conversation-->                             
                            Message
                </div>
                        </div>

                        <div class="row"> 
                           <!-- should be at the bottom of the Screen like in everyother Chat-->
                            <div class="col-12 col-sm-12 col-md-12 col-lg-12 col-xl-12 bg-success">
                                Text-Input and Button
 
                            </div>
                        </div>

                    </div>
                </div>
            </div>
                  </div>
                </div>
              </div>
            </div>
          </div>
        </div>

    </body>
    </html>
TylerH
  • 20,799
  • 66
  • 75
  • 101
Kazim
  • 175
  • 9

2 Answers2

1

This question is basically the same as this and this, but the overly complex, nested and incorrect Bootstrap grid structure you're using make it almost impossible to make the height work as expected.

If you simplify the markup as recommended in your other questions, the height issue is resolved using the flexbox grow and shrink utilities as explained in the Bootstrap docs...

"Use .flex-grow-* utilities to toggle a flex item’s ability to grow to fill available space. "

Using vh-100, flex-grow-0, flex-grow-1, flex-column, etc...

<div class="container-fluid d-flex flex-column vh-100">
    <nav class="navbar navbar-expand-lg navbar-light bg-light">
        ...
    </nav>
    <div class="row flex-grow-1">
        <div class="col-md-4 bg-warning">
            <!-- this is the left side -->
        </div>
        <div class="col-md-8 bg-primary d-flex flex-column flex-grow-1">
            <div class="row flex-column flex-fill">
                <div class="col bg-success flex-grow-0">
                    <div class="row">
                        <!-- it should be the full width but unfortunatelly a scrollbar appears because of this section right here... -->
                    </div>
                </div>
                <div class="col bg-info flex-fill">
                    <!-- Should be in the middle and full screen (like the area where you and another person have a conversation--> Message </div>
                <!-- should be at the bottom of the Screen like in everyother Chat-->
                <div class="col bg-success flex-grow-0"> Text-Input and Button </div>
            </div>
        </div>
    </div>
</div>

https://codeply.com/p/iP18GJ1ZdU

Carol Skelly
  • 351,302
  • 90
  • 710
  • 624
  • Thank you very much for your answer. I have taken the advice of the answers to heart. I followed this scheme `container` > `row` > `col` > `row` > `col`. I just can't see where what is wrong. Could you point this out to me in more detail so I can get this to work the way I want it to? – Kazim Apr 23 '21 at 17:27
0

It can be done through display: flex. It is necessary to set height: 100% to take available height.

So I've edited some classes and add some classes.

The complete stackblitz example can be seen here

An example:

<div class="box">
    <div class="row box m-0">
      <div class="col-md-12 p-0 foo-flex">
          <div>
          <nav class="navbar navbar-expand-lg navbar-light bg-light">
              <a class="navbar-brand" href="#">
                  Navbar w/ text
        </a>
              <button
                  class="navbar-toggler"
                  type="button"
                  data-toggle="collapse"
                  data-target="#navbarText"
                  aria-controls="navbarText"
                  aria-expanded="false"
                  aria-label="Toggle navigation"
              >
                  <span class="navbar-toggler-icon"></span>
              </button>
              <div class="collapse navbar-collapse" id="navbarText">
                  <ul class="navbar-nav mr-auto">
                      <li class="nav-item active">
                          <a class="nav-link" href="#">
                              Home <span class="sr-only">(current)</span>
                          </a>
                      </li>
                      <li class="nav-item">
                          <a class="nav-link" href="#">
                              Features
              </a>
                      </li>
                      <li class="nav-item">
                          <a class="nav-link" href="#">
                              Pricing
              </a>
                      </li>
                  </ul>
                  <span class="navbar-text">Navbar text with an inline element</span>
              </div>
          </nav>
          </div>
        <div class="container-fluid foo-flex-item">
          <div class="row  h-100">


            <div class="col-md-4 bg-warning">
                      <div>
                <div class="row m-1">
                  <div class="col-md-11">
                    Chats
                </div>
                  <div class="col-md-1">
                    <i class="fas fa-plus-circle"></i>
                  </div>
                </div>
                <div class="row mb-2">
                  <div class="col-md-12">
                    <form class="form-inline" style="height: 0%; width: 100%; paddingLeft: 0; paddingRight: 0; paddingTop: 8px;">
                      <input class="form-control  mr-sm-1" style="width: 80%;" type="search" placeholder="Suchen" aria-label="Search" />
                      <button class="btn btn-outline-success my-2 my-sm-0" type="submit">Suchen</button>
                    </form>
                  </div>
                </div>
                <div class="row">
                  <div class="col-md-12">
                    <div class="list-group">
                      <div>
          <a href="#" class="list-group-item list-group-item-action flex-column align-items-start" style="7.5px; marginBottom: 7.5px;">
              <div class="d-flex w-100 justify-content-between">
                  <h5 class="mb-1">List group item heading</h5>
                  <small>3 days ago</small>
              </div>
              <div class="row">
                  <div class="col-md-11">Donec id elit non mi porta...
                  </div>
                  <div class="col-md-1">
                      <span class="badge badge-primary badge-pill text-right">5</span>
                  </div>
              </div>
          </a>
      </div>
                    </div>
                  </div>
                </div>
              </div>
            </div>
            <div class="col-md-8 bg-primary">
                <div>
          <div class="row">
              <div class="col-12 col-sm-12 col-md-12 col-lg-12 col-xl-12">
                  <div class="row">
                    <div class="col-12 col-sm-12 col-md-12 col-lg-12 col-xl-12 bg-success">
                        <div class="row">
                            <div class="col-2 col-sm-2 col-md-2 col-lg-2 col-xl-2">
                                <img src="..." class="image-head-chat" alt="Responsive image" />
                            </div>

                            <div class="col-8 col-sm-8 col-md-8 col-lg-8 col-xl-8">
                                Text
                            </div>

                            <div class="col-2 col-sm-2 col-md-2 col-lg-2 col-xl-2">
                                Icons
                            </div>
                         </div>
                      </div>
                  </div>


                  <div class="row">
                      <div class="col-12 col-sm-12 col-md-12 col-lg-12 col-xl-12 bg-success">
                      Message
          </div>
                  </div>

                  <div class="row">

                      <div class="col-12 col-sm-12 col-md-12 col-lg-12 col-xl-12 bg-success">
                          Text-Input and Button

                      </div>
                  </div>

              </div>
          </div>
      </div>
            </div>
          </div>
        </div>
      </div>
    </div>
  </div>





  <!-- <script src=" index.js"></script> -->
  <link rel="stylesheet" type="text/css"
    href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.0/css/bootstrap.min.css">
  <script type="text/javascript" src="https://code.jquery.com/jquery-3.3.1.slim.min.js"></script>
  <script type="text/javascript" src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.0/js/bootstrap.min.js">
  </script>
StepUp
  • 36,391
  • 15
  • 88
  • 148
  • Thank you very much, looks really good, but unfortunatelly now when you run the code there is a vertical scrollbar, which shouldnt be there :( do you know how to get rid of this, too? – Kazim Apr 23 '21 at 08:34
  • @Kazim Bootstrap is first mobile. So you need this put into wide screen. Try to use this code on bigger screen – StepUp Apr 23 '21 at 08:38
  • I tried this on a bigger screen, the vertical scrollbar is still there what I don't want – Kazim Apr 23 '21 at 09:07