Html flex容器内的传单地图不会显示
我想在flex容器中显示一个传单地图,以便在显示/隐藏父容器中的其他(最初隐藏)元素时轻松调整地图的大小。这就是我正在做的Html flex容器内的传单地图不会显示,html,css,flexbox,leaflet,Html,Css,Flexbox,Leaflet,我想在flex容器中显示一个传单地图,以便在显示/隐藏父容器中的其他(最初隐藏)元素时轻松调整地图的大小。这就是我正在做的 我有一个flex容器,其中堆叠了两个div元素——默认情况下占据相同的高度 下半部分包含一个图像 上半部分包含实际映射,该映射将在动态添加的div元素中创建 还有第三个flexdiv元素infoBox,它最初是隐藏的。最终的想法是,当infoBox上设置了display:flex时,它会导致其他内容缩小(理想情况下会消失,但看起来Flexbox不会这样做) 这个想法目前
- 我有一个flex容器,其中堆叠了两个div元素——默认情况下占据相同的高度
- 下半部分包含一个图像
- 上半部分包含实际映射,该映射将在动态添加的div元素中创建
- 还有第三个flexdiv元素infoBox,它最初是隐藏的。最终的想法是,当infoBox上设置了
时,它会导致其他内容缩小(理想情况下会消失,但看起来Flexbox不会这样做)display:flex
var imap=document.createElement('div');
imap.id='imap';
document.getElementById('mapBox').appendChild(imap);
var lmap=L.map('imap',{center:[51.510067,-0.133869],zoom:10})代码>
#容器
{
显示器:flex;
弯曲方向:柱反向;
最小高度:400px;
}
#picBox
{
弹性:5;
背景图片:url(https://placeimg.com/1000/1000/tech);
背景尺寸:封面;
背景重复:无重复;
背景位置:中心;
}
#地图盒
{
弹性:5;
位置:相对位置;
边框:1px纯红;
}
#信息箱
{
弹性:20;
边框:1px纯蓝色;
显示:无;
}
Stackoverflow真的很酷!
这里的主要问题是动态创建的div
,idimap
它渲染为标准的div
,占据其父级的全部宽度,但由于它没有任何内容(贴图渲染为绝对定位元素),因此其高度为0
您可以将mapBox
设置为flex容器,以便使用脚本创建的imap
元素将拉伸并填充其父元素
堆栈片段
var imap=document.createElement('div');
imap.id='imap';
document.getElementById('mapBox').appendChild(imap);
var lmap=L.map('imap',{center:[51.510067,-0.133869],zoom:10})代码>
#容器
{
显示器:flex;
弯曲方向:柱反向;
最小高度:400px;
}
#picBox
{
弹性:5;
背景图片:url(https://placeimg.com/1000/1000/tech);
背景尺寸:封面;
背景重复:无重复;
背景位置:中心;
}
#地图盒
{
弹性:5;
位置:相对位置;
边框:1px纯红;
显示:flex;/*已添加*/
}
#地图盒>分区
{
柔性:1;/*已添加,填充父级宽度*/
/*对齐项目:拉伸;默认为父项的填充高度*/
}
#信息箱
{
弹性:20;
边框:1px纯蓝色;
显示:无;
}
Stackoverflow真的很酷!
如果您的映射最初是隐藏的,并且它的容器元素在一段时间后(或在一些交互之后)显示,则可能需要运行map.invalidateSize()
见例