1

In the code above, I'm trying to center the h1 element over the image both both vertically and horizontally using just bootstrap 4 without any css styling. how to do that?

<link href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" rel="stylesheet"/>

<div id="navbar" class="p-2">
        <nav class="navbar navbar-expand-lg navbar-light">
            <a class="navbar-brand" href="BR Architects"><span id="BR">BR</span> Architects</a>
            <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarNavDropdown" aria-controls="navbarNavDropdown" aria-expanded="false" aria-label="Toggle navigation">
                <span class="navbar-toggler-icon"></span>
            </button>
            <div class="collapse navbar-collapse" id="navbarNavDropdown">
                <ul class="navbar-nav ml-auto">
                    <li class="nav-item">
                        <a class="nav-link" href="#">Projects</a>
                    </li>
                    <li class="nav-item">
                        <a class="nav-link" href="#">About</a>
                    </li>
                    <li class="nav-item">
                        <a class="nav-link" href="#">Contact</a>
                    </li>
                </ul>
            </div>
        </nav>         
    </div>

    <div id="header-img">
        <div class="card text-center">
            <img class="card-img" src="https://www.w3schools.com/w3images/architect.jpg" alt="Card image">
            <div class="card-img-overlay">
              <h1 class="card-title"><span class="text-white">BR</span> Architects</h1>   
            </div>
          </div>
    </div>

Thanks!

Nicolás Alarcón Rapela
  • 2,714
  • 1
  • 18
  • 29
ayman tarig
  • 73
  • 1
  • 9

3 Answers3

1

The easiest solution I could think of at the moment

Add this line inside your card-img-overlay " d-flex justify-content-center align-items-center "

Example:

<div class="card-img-overlay d-flex justify-content-center align-items-center">
       <h1 class="card-title "><span class="text-white">BR</span> Architects</h1>   
 </div>

Hope this helps.

Thanveer Shah
  • 3,250
  • 2
  • 15
  • 31
1

One solution is to add d-flex class to card-img-overlay and then apply the classes justify-content-center for horizontal alignment and align-items-center for vertical alignment.

<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.6/umd/popper.min.js" integrity="sha384-wHAiFfRlMFy6i5SRaxvfOCifBUQy1xHdJ/yoi7FRNXMRBu5WHdZYu1hA6ZOblgut" crossorigin="anonymous"></script>
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.2.1/css/bootstrap.min.css" integrity="sha384-GJzZqFGwb1QTTN6wy59ffF1BuGJpLSa9DkKMp0DgiMDm4iYMj70gZWKYbI706tWS" crossorigin="anonymous">
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.2.1/js/bootstrap.min.js" integrity="sha384-B0UglyR+jN6CkvvICOB2joaf5I4l3gm9GU6Hc1og6Ls7i6U/mkkaduKaBhlAXv9k" crossorigin="anonymous"></script>


<div id="header-img">
  <div class="card">
    <img class="card-img" src="https://www.w3schools.com/w3images/architect.jpg" alt="Card image">
    <div class="card-img-overlay d-flex align-items-center justify-content-center">
      <h1 class="card-title">
        <span class="text-white">BR</span> Architects
      </h1>   
    </div>
  </div>
</div>
Shidersz
  • 16,846
  • 2
  • 23
  • 48
0
<div id="header-img">
    <div class="row justify-content-center align-self-center">
        <img class="card-img" src="https://www.w3schools.com/w3images/architect.jpg" alt="Card image">
           <div class="card-img-overlay">
              <h1 class="card-title"><span class="text-white">BR</span> Architects</h1>
           </div>
    </div>
</div>
Dumidu Udayanga
  • 864
  • 2
  • 9
  • 21