1

I'm struggling to get the leaflet map to fill in the rest of the screen. I'd expect to get a header bar and the map to fill in the rest of the screen. I've tried various options - e.g. setting height to 100%

Any ideas? I've tried various options - e.g. setting height to 100%. Thanks.

var map = L.map('map').setView([51.455, -0.973], 13);

L.tileLayer('https://tile.openstreetmap.org/{z}/{x}/{y}.png', {
  maxZoom: 19,
  attribution: '&copy; <a href="http://www.openstreetmap.org/copyright">OpenStreetMap</a>'
}).addTo(map);
@media (min-width: 768px) {
  html {
    font-size: 16px;
  }
}

#map {
  height: 100%;
}
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD" crossorigin="anonymous">

<link rel="stylesheet" href="https://unpkg.com/leaflet@1.9.3/dist/leaflet.css" integrity="sha256-kLaT2GOSpHechhsozzB+flnD+zUyjE2LlfWPgU04xyI=" crossorigin="" />
<script src="https://unpkg.com/leaflet@1.9.3/dist/leaflet.js" integrity="sha256-WBkoXOwTeyKclOHuWtc+i2uENFpDZ9YPdf5Hf+D7ewM=" crossorigin=""></script>


<div class="container-fluid min-vh-100 d-flex flex-column">
  <div class="row">
    <div class="col">
      Top Bar
    </div>
  </div>

  <div class="row flex-grow-1">
    <div id="map"></div>
  </div>
</div>


<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js">
</script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/js/bootstrap.bundle.min.js" integrity="sha384-w76AqPfDkMBDXo30jS1Sgez6pr3x5MlQ1ZAGC+nuZB+EYdgRZgiwxhTBTkF7CXvN" crossorigin="anonymous"></script>
isherwood
  • 58,414
  • 16
  • 114
  • 157
  • Does this answer your question? [Height 100% on flexbox column child](https://stackoverflow.com/questions/20959600/height-100-on-flexbox-column-child) – isherwood Feb 06 '23 at 19:29

1 Answers1

0

Per Height 100% on flexbox column child, use other means to set the height of a flex element's child. I've applied Bootstrap's d-flex class.

var map = L.map('map').setView([51.455, -0.973], 13);

L.tileLayer('https://tile.openstreetmap.org/{z}/{x}/{y}.png', {
  maxZoom: 19,
  attribution: '&copy; <a href="http://www.openstreetmap.org/copyright">OpenStreetMap</a>'
}).addTo(map);
@media (min-width: 768px) {
  html {
    font-size: 16px;
  }
}
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD" crossorigin="anonymous">

<link rel="stylesheet" href="https://unpkg.com/leaflet@1.9.3/dist/leaflet.css" integrity="sha256-kLaT2GOSpHechhsozzB+flnD+zUyjE2LlfWPgU04xyI=" crossorigin="" />
<script src="https://unpkg.com/leaflet@1.9.3/dist/leaflet.js" integrity="sha256-WBkoXOwTeyKclOHuWtc+i2uENFpDZ9YPdf5Hf+D7ewM=" crossorigin=""></script>


<div class="container-fluid min-vh-100 d-flex flex-column">
  <div class="row">
    <div class="col">
      Top Bar
    </div>
  </div>

  <div class="row flex-grow-1 d-flex flex-col align-items-stretch">
    <div id="map" class="d-flex"></div>
  </div>
</div>


<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js">
</script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/js/bootstrap.bundle.min.js" integrity="sha384-w76AqPfDkMBDXo30jS1Sgez6pr3x5MlQ1ZAGC+nuZB+EYdgRZgiwxhTBTkF7CXvN" crossorigin="anonymous"></script>
isherwood
  • 58,414
  • 16
  • 114
  • 157