Ich habe versucht, die Höhe meiner Faltblattkarte innerhalb des Bootstraps auf einen Prozentsatz zu ändern, aber jedes Mal, wenn ich dies tue, wird die Karte nicht gezeichnet. Daher muss ich immer zum px-Wert zurückkehren. Ich bin mir ziemlich sicher, dass es eine einfache Einstellung ist, die mir fehlt, da ich ein CSS-Neuling bin. Hier ist meine CSS.
<style type="text/css">
body {
padding-top: 60px;
padding-bottom: 40px;
}
#map {
height: 75%;
}
</style>
web-mapping
leaflet
bootstrap-framework
njackson.gis
quelle
quelle
Antworten:
Ich hatte schon immer Probleme mit der Kartenhöhe im Bootstrap, da der Rand oben unterschiedlich sein kann, wenn sich die Breite der Karte ändert, um eine Höhe von 100% zu erhalten (aber mit einer Navigationsleiste oben), die ich am Ende verwende
Das ist hässlich, erledigt aber die Arbeit.
quelle
[UPDATE 2020]
Ab 2020/02/23 bietet Flexbox 95% Browserunterstützung und ist eine großartige Option, um Leaflet mithilfe der Flex-Grow-Eigenschaft reaktionsfähig zu machen.
Sehen Sie sich hier eine CodePen-Demo an
Es ist so eingerichtet, dass es weiterhin in Browsern gerendert wird, die Flexbox nicht unterstützen. Nur diese Benutzer müssen abit scrollen
¯ \ _ (ツ) _ / ¯
================================================== ==========
[ALTER POST]
Das hat bei mir funktioniert.
Hinweis: Ich wollte, dass meine Karte auf großen Bildschirmen nicht 100% breit ist, also habe ich hinzugefügt
quelle
Das Problem ist
#map
ein untergeordnetesbody
Element von und Sie können prozentuale Höhen für untergeordnete Elemente nur angeben, wenn das übergeordnete Element eine explizit definierte Höhe hat.Dies würde schaffen, was Sie wünschen, aber die nutzbare Fläche würde niemals größer als 75% von 480px werden. Normalerweise wird ein
div
zusammengeklappt, wenn kein Inhalt vorhanden ist, aber mit Leaflet, obwohl sich Ihre Karte imdiv
befindet, wird sie beim Rendern nicht berechnet, daher beim Rendern zusammenbrechen. Wenn der Inhalt den gesamten vertikalen Raum einnehmen soll, können Sie die Fenstergröße beim Laden der Seite mit etwas Javascript abfragen und die Höhe auf diese Weise festlegen.quelle
Fügen Sie einfach ein
height:100%
zu den Tagshtml
und hinzu,body
damit sie eine definierte Höhe haben und als Referenz verwendet werden können und es funktionieren sollte.Verweise:
Diese verwandte Frage von Stackoverflow: Prozenthöhe HTML 5 / CSS
Sie können auch einen Blick auf den W3C CSS 2.1-Standard werfen, um das Box-Modell und den Teil über die Berechnung von Höhen und Rändern zu sehen
quelle
Warnung! Nach Cross-Browser-Tests stellte ich fest, dass meine Antwort unten nur für mich in Chrome und nicht in Firefox funktioniert
Ich hatte das gleiche Problem und habe dies mit display: table auf einem Hauptdiv und display table-cell auf jedem div behoben, dank dieser Antwort auf stackoverflow :
Und die CSS:
quelle