Home > Mobile >  When use two col-12 classes in Bootstrap4
When use two col-12 classes in Bootstrap4

Time:01-02

When i try use two col-12 classes in Bootstrap like this:

<!doctype html>
<html  lang="en">
  <head>
    <title>test</title>
    <!-- Required meta tags -->
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">

    <!-- Bootstrap CSS -->
    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">
    <style>
        .navbar {
            height: 3rem;
        }
        .main-container {
            height: calc(100vh - 3rem);
        }
        @media (min-width: 768px) {
            
        }
    </style>
  </head>
  <body >
      <header >
          header
      </header>
      <div >
          <div >
             <div >
                A area
            </div>
             <div >
                B area
            </div>
          </div>
      </div>
    <!-- Optional JavaScript -->
    <!-- jQuery first, then Popper.js, then Bootstrap JS -->
    <script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X 965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH 8abtTE1Pi6jizo" crossorigin="anonymous"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js" integrity="sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1" crossorigin="anonymous"></script>
    <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM B07jRM" crossorigin="anonymous"></script>
  </body>
</html>

I find my page will show when i use on mobile screen: mobile screen result I think the size of A area should be max-content. And where did the blank content under A area come form?

CodePudding user response:

Your .main-container have height to almost full screen. If screen width is small, the column elements will be align vertical instead of horizontal as specify in col-md-3 col-12. And when they align in vertical, those 2 elements will be align evenly by (parent height / 2) because default align-content of flex is normal.

If you want to keep your height on .main-container, add the value of align-content to flex-start.
See reference on css tricks website.

.navbar {
    height: 3rem;
}

.main-container {
    height: calc(100vh - 3rem);
    align-content: flex-start;
}

@media (min-width: 768px) {}
<link href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" rel="stylesheet"/>
<header >
    header
</header>
<div >
    <div >
        <div >
            A area
        </div>
        <div >
            B area
        </div>
    </div>
</div>

<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js"></script>

See it on jsfiddle.

CodePudding user response:

Looks like, the problem is:

.main-container {
    height: calc(100vh - 3rem);
}

A solution could be:

/* small mobile :320px. */
@media (max-width: 767px) {
 .main-container {
    height: 100px; /* for example */
 }
}
  • Related