我有一个固定的导航栏的网站,应该滚动的页面。当我添加一个JS谷歌地图,导航栏不再移动:
http://amosjackson.com/map/index.html而且,这个问题只在地图处于绝对位置时发生。
将translateZ添加到固定元素
-webkit-transform: translateZ(0);
我在分析整个谷歌地图画布时发现的。API还向映射中添加了一个
-webkit-transform: translateZ(0)
。这使得许多浏览器无法正确绘制固定元素。
此外,固定元素可能还需要其他相关的可见性属性,如z-index
和不透明度。
一个有效的解决方案:(我总是把我的地图画布到一个容器)
.my-fixed-elem {
-webkit-transform: translateZ(0);
-moz-transform: translateZ(0);
-o-transform: translateZ(0);
-ms-transform: translateZ(0);
transform: translateZ(0);
z-index: 500 // adapt for your project
opacity: 1 // some times you can remove this
}
.map-canvas-container {
width: 100%; // somewidth
height: 750px; // someheight
position: relative;
z-index: 18;
top: 0;
left: 0;
}
#map-canvas-contact {
width: 100%;
height: 100%;
}
从Google mapsdiv中删除z-index,并给它一个不透明度值,使文本变得可见。和他们玩一玩…
这是一种webkit bug,与添加到外部地图元素的"transform" css设置有关。transform:translateZ(0px)被添加到样式属性中,但不需要在那里,删除它没有效果。
所以答案是在页面上添加一个css行,并使用!important标志,这样它就会覆盖style属性的设置。
<style>
#map-canvas[style] { -webkit-transform:none !important; }
</style>
注意,[style]部分使它仅在google添加style属性时生效,并且可能需要更改#map-canvas以匹配您发送给google.maps. map ()