【发布时间】:2016-07-21 15:28:58
【问题描述】:
我正在尝试在占用剩余空间的 flex child 中绘制地图。
我在主要内容的顶部有几个标题,其中一个横幅有时被隐藏/删除,所以我使用 flexbox 以便标题可以在不影响其他元素位置的情况下消失。即当我使用绝对位置时,这不起作用。
我的问题是,在 flexbox 计算地图 div 的高度之前,leaflet 似乎正在计算地图视口。
例子:
这是一张传单认为地图高度小于应有高度的屏幕截图。
如果我检查元素高度,它是正确的。此外,如果我放入计时器并强制传单使地图大小无效,则地图会在正确的高度重新渲染。
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;
}
编辑:
我已经快速重现了这个问题,万岁!但是我仍然不知道到底发生了什么。仅当我在我的应用程序中包含 ngAnimate 时才会出现此问题。不管我是否使用 ngAnimate。
这是坏掉的笨蛋。在初始页面加载时,地图很好。单击关于链接,然后返回地图。请注意,返回时,只有大约一半的地图加载。我将高度记录到控制台。当您导航离开地图并返回时,其大小始终约为一半。
angular animate 做了什么来使元素在一瞬间缩小一半?这是角度的错误吗?
【问题讨论】:
-
#map的大小会在您单击“关于”后立即更改,如下图所示:plnkr.co/edit/NRTW4TL29yc36omsbJ9M?p=preview -
正确。很好的发现。如果我不将 ngAnimate 注入到我的应用程序中,则地图 div 将不再在 about 页面中可用。这似乎是错误的,为什么当我将 angular-animate 注入我的应用程序时,那个 div 会停留在新的路线上?
标签: css angularjs leaflet flexbox angularjs-animation