残りのスペースを占めるフレックスチャイルドにマップを描画しようとしています。flexboxが高さを計算した後のリーフレットマップをレンダリングする
私は主なコンテンツの上にカップルヘッダーがあり、バナーの1つが隠されたり削除されたりすることがあるので、フレックスボックスを使用して、他の要素の位置に影響を与えずにヘッダーを消すことができます。 I.Eこれは、絶対的なポジションを使用するとうまくいかない。
私の問題は、flexboxがマップdivの高さを計算する前にリーフレットがマップビューポートを計算しているようです。
例:
ここでは、マップの高さは、それがあるべきよりも小さい思考リーフレットのスクリーンショットです。
私は要素の高さを確認した場合、それは正しいです。さらに、リーフレットにタイマーを入れてマップサイズを無効にすると、マップは正しい高さでレンダリングされます。
HTML:
<body>
<div class="header">
Header
</div>
<div class="banner">
Banner
</div>
<main class="main">
<div class="nav">
<strong>Navigation</strong>
</div>
<div id="map" class="map-content"></div>
</main>
<script src="script.js"></script>
</body>
CSS:
html, body {
height: 100%;
width: 100%;
display: flex;
flex-direction: column;
}
.header {
height: 50px;
background-color: grey;
color: white;
}
.banner {
height: 50px;
background-color: lightgrey;
color: white;
}
.main {
display: flex;
flex: 1 1 auto;
flex-direction: row;
}
.map-content {
flex: 1 1 auto;
}
.nav {
background-color: #2A3D4A;
color: white;
width: 200px;
}
編集:私は叫んだ、plunkで問題を再現している
!しかし、私はまだ何が起きているのか正確には分かりません。この問題は、アプリケーションにngAnimateを組み込む場合にのみ発生します。 ngAnimateを使用するかどうかは関係ありません。
ここには壊れた塊があります。最初のページの読み込み時にマップは正常です。 aboutリンクをクリックして、地図に戻ります。戻ってくると地図の約半分しか読み込まれないことに注意してください。私はコンソールに高さを記録する。あなたが地図から離れて移動し、常にその約半分の大きさに戻るとき。
分割された秒間に要素をサイズの半分にするには、角度アニメーションとは何ですか?これは角度のバグですか?
http://plnkr.co/edit/dyBH1Szo3lIEWajKqXWj?p=preview
このプランナーに示すように、「約」をクリックすると、 '#map'のサイズが変わります。http://plnkr.co/edit/NRTW4TL29yc36omsbJ9M?p=preview – sqsinger
正しい。良い発見。私のアプリにngAnimateを挿入しないと、aboutのページでdivが利用できなくなります。それは間違っているように見えますが、なぜ私のアプリにアンギュラアニメーションを挿入すると、そのルートが新しいルートに留まっているのですか? – lostintranslation