我在 Ruby on Rails应用程序中使用Mapbox.对于我的生活,我无法让地图坚持任何简单的CSS.允许地图出现的唯一CSS是给它一个顶部和底部为0的绝对位置.更改高度和宽度以外的任何内容都会导致
          <div id="map-container">
  <div id='map'>
  </div>
</div>
<script>
L.mapbox.accessToken = 'pk.eyJ1IjoiYWxvb2thdG9tbW9yb3ciLCJhIjoiNGM4ODhkZjUwMGM1ZDE4M2VjNzQ4MmQ4ODcxMjk5ZjMifQ.XVvFc8kl-0z4NAblE-mNqw';
var map = L.mapbox.map('map', 'mapbox.streets').setView([40, -74.50], 10);
</script> 
 以下CSS:
#map {
  position: absolute;
  top: 0;
  bottom: 0;
  height: 50%;
  width: 50%;
} 
 如果我改变了什么,地图就会消失.我试图给map-container div一个相对位置.这不起作用.我想要的只是将地图包含在div中,看起来似乎并不困难.从2013年开始有一篇关于此的帖子,但它已经过时了.谢谢你的帮助.
当定位静态/相对时,必须为Leaflet设置的唯一css规则(Mapbox是 Leaflet的扩展版本)元素是绝对高度:#map {
    height: 200px;
} 
 示例:http://plnkr.co/edit/vdeyLv?p=preview
这将始终有效,无论嵌套元素的深度如何.如果未设置宽度,则将使用所有可用宽度.当您想要以百分比切换到设置高度时,您需要确保地图元素的所有anchestor元素也具有高度设置:
#html, #body, #map-container {
    height: 100%;
}
#map {
    height: 40%;
} 
 示例:http://plnkr.co/edit/rAuNC0?p=preview
我想在Mapbox示例中使用绝对定位背后的原因是,人们无需解释上述内容,因为无论您对地图元素的嵌套程度有多深,它都能正常工作.
