0

So i want this form which is in a card to be in the middle of the whole web page and responsive.I tried changing the height of everything to h-100 and align-items-center and nothing seems to work.

<!DOCTYPE html>
<html lang="en" dir="ltr">
  <head>
    <meta charset="utf-8">
    <style>
      html,body{
        height: 100%;
      }
    </style>
    <title></title>
    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css" integrity="sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh" crossorigin="anonymous">

  </head>
  <body>
    <div class="container h-100">
      <div class="d-flex justify-content-center h-100 ">
      <div class="col-md-6 h-100 ">
        <div class="card">
          <div class="card-body">
            <div class="card-title"><h3>Log In</h3></div>
              <form method="post">
                <div class="form-group">
                  <label for="username">Username</label>
                  <input class="form-control" type="text" name="username" value="Username" placeholder="Donald Trump...">
                </div>
                <div class="form-group">
                  <label for="username">Password</label>
                  <input class="form-control" type="password" name="password" value="Password" placeholder="**********">
                </div>
                  <input class="btn btn-primary" type="submit" name="" value="LogIn">
              </form>
                </div>
                </div>
          </div>
      </div>
      </div>


      <script src="https://code.jquery.com/jquery-3.4.1.slim.min.js" integrity="sha384-J6qa4849blE2+poT4WnyKhv5vZF5SrPo0iEjwBvKU7imGFAV0wwj1yYfoRSJoZ+n" crossorigin="anonymous"></script>
  <script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.0/dist/umd/popper.min.js" integrity="sha384-Q6E9RHvbIyZFJoft+2mJbHaEWldlvI9IOYy5n3zV9zzTtmI3UksdQRVvoxMfooAo" crossorigin="anonymous"></script>
  <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/js/bootstrap.min.js" integrity="sha384-wfSDF2E50Y2D1uUdj0O3uMBJnjuUD4Ih7YwaYd1iqfktj0Uod8GCExl3Og8ifwB6" crossorigin="anonymous"></script>

  </body>
</html>

I was expecting this: enter image description here

but i get this: enter image description here

preethh
  • 15
  • 6
  • Try some CSS to the class card position: absolute;top: 50%;transform: translateY(-50%);width: 100%; – user9437856 Mar 23 '20 at 18:42
  • Try using "d-flex justify-content-center align-items-center" on container div, you might have to adjust the width after that – Vishal Mar 23 '20 at 18:51
  • justify-content-center and align-items-center works on the child of the flexbox parent (the row since columns should be inside a `row`), so the column shouldn't be `h-100` https://www.codeply.com/p/RNbfSzVt4c – Carol Skelly Mar 23 '20 at 18:54

1 Answers1

1

Use align-items utilities on flexbox containers to change the alignment of flex items on the cross axis (the y-axis to start, x-axis if flex-direction: column). Choose from start, end, center, baseline, or stretch (browser default).

<!DOCTYPE html>
<html lang="en" dir="ltr">
  <head>
    <meta charset="utf-8">
    <style>
      html,body{
        height: 100%;
      }
    </style>
    <title></title>
    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css" integrity="sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh" crossorigin="anonymous">

  </head>
  <body>
    <div class="container h-100">
      <div class="d-flex justify-content-center h-100 align-items-center">
      <div class="col-md-6">
        <div class="card">
          <div class="card-body">
            <div class="card-title"><h3>Log In</h3></div>
              <form method="post">
                <div class="form-group">
                  <label for="username">Username</label>
                  <input class="form-control" type="text" name="username" value="Username" placeholder="Donald Trump...">
                </div>
                <div class="form-group">
                  <label for="username">Password</label>
                  <input class="form-control" type="password" name="password" value="Password" placeholder="**********">
                </div>
                  <input class="btn btn-primary" type="submit" name="" value="LogIn">
              </form>
                </div>
                </div>
          </div>
      </div>
      </div>


      <script src="https://code.jquery.com/jquery-3.4.1.slim.min.js" integrity="sha384-J6qa4849blE2+poT4WnyKhv5vZF5SrPo0iEjwBvKU7imGFAV0wwj1yYfoRSJoZ+n" crossorigin="anonymous"></script>
  <script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.0/dist/umd/popper.min.js" integrity="sha384-Q6E9RHvbIyZFJoft+2mJbHaEWldlvI9IOYy5n3zV9zzTtmI3UksdQRVvoxMfooAo" crossorigin="anonymous"></script>
  <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/js/bootstrap.min.js" integrity="sha384-wfSDF2E50Y2D1uUdj0O3uMBJnjuUD4Ih7YwaYd1iqfktj0Uod8GCExl3Og8ifwB6" crossorigin="anonymous"></script>

  </body>
</html>

For more information: https://getbootstrap.com/docs/4.0/utilities/flex/#align-items

Vaibhav Bhuva
  • 445
  • 4
  • 15