我很难将边栏放在 google 地图旁边 - gmaps4rails
I am having a difficult time putting my sidebar next to my google maps - gmaps4rails
我试图将带有搜索结果的边栏放在我的 google 地图旁边(我正在使用 gmaps4rails)。我把它们并排放置,但问题是侧边栏没有延长地图的长度见图片 SideBar with google Map.
这是我认为的代码
<div id="sideBar" class="pre-scrollable">
<h2><%= @count%> results found </h2>
<br>
<% @maps.each do |map| %>
<div>
<div class="" id="map_<%= map.id %>">
<h4>
<%= link_to map.number, controller: "maps", action: "show", id: map.id%>
</h4>
<hr>
</div>
</div>
<% end %>
<%= link_to 'Return to Main Map', maps_path %>
</div>
<div id="map_wrapper">
<div id="map" style='width: 100%; height: 100%;'></div>
</div>
这是我在 css 中的代码:
#map_wrapper {
margin-left: 300px;
height: 800px;
}
#sideBar{
width: 300px;
height: 800px;
position: absolute;
}
我的目标是并排且长度完全相同。
如果您能 post 页面的 html 会很有帮助。如果没有,我可以说,当使用绝对定位的元素时,您应该指定 top 和 left 属性值 - 特异性有助于调试这种情况。此外,您应该知道它们的位置。他们的父容器是他们绝对定位的。
我注意到的另一件事,你有一个
class="pre-scrollable"
这在您的问题中没有记录,所以我不确定这是否也会影响布局。
我在代码中添加了我的评论。
工作响应示例:
#map_wrapper {
margin-left: 30%; /* should match sideBar width */
overflow: hidden; /* cut off any overflow */
height: 100%; /* fill up main div height */
}
#sideBar {
width: 30%; /* adjust sidebar width as percentage of main div */
max-height: 100%; /* Never exceed main div height on small screens */
height: 400px;
position: absolute;
background: #131418;
}
#sideBar span {
color: #999;
}
.main {
max-width: 100vw; /* set max desired width for the ENTIRE set up */
height: 400px; /* set max desired height for the ENTIRE set up */
max-height: 100vh; /* make sure entire setup height never exceeds device height */
}
<!-- initilize map -->
<script>
function initMap() {var map = new google.maps.Map(document.getElementById('map'), {center: {lat: 40.674,lng: -73.945},zoom: 12,})}
</script>
<!--Your Map setup -->
<div class="main">
<div id="sideBar" class="pre-scrollable">
<span>Sidebar content goes here...</span>
</div>
<div id="map_wrapper">
<div id="map" style='width: 100%; height: 100%;'></div>
</div>
</div>
<!-- Load google API in the footer. -->
<script src="https://maps.googleapis.com/maps/api/js?key=AIzaSyDHu4QBgWONqtdOWVLTW5XZ51B1eOU6SWw&callback=initMap" async defer></script>
我试图将带有搜索结果的边栏放在我的 google 地图旁边(我正在使用 gmaps4rails)。我把它们并排放置,但问题是侧边栏没有延长地图的长度见图片 SideBar with google Map.
这是我认为的代码
<div id="sideBar" class="pre-scrollable">
<h2><%= @count%> results found </h2>
<br>
<% @maps.each do |map| %>
<div>
<div class="" id="map_<%= map.id %>">
<h4>
<%= link_to map.number, controller: "maps", action: "show", id: map.id%>
</h4>
<hr>
</div>
</div>
<% end %>
<%= link_to 'Return to Main Map', maps_path %>
</div>
<div id="map_wrapper">
<div id="map" style='width: 100%; height: 100%;'></div>
</div>
这是我在 css 中的代码:
#map_wrapper {
margin-left: 300px;
height: 800px;
}
#sideBar{
width: 300px;
height: 800px;
position: absolute;
}
我的目标是并排且长度完全相同。
如果您能 post 页面的 html 会很有帮助。如果没有,我可以说,当使用绝对定位的元素时,您应该指定 top 和 left 属性值 - 特异性有助于调试这种情况。此外,您应该知道它们的位置。他们的父容器是他们绝对定位的。
我注意到的另一件事,你有一个
class="pre-scrollable"
这在您的问题中没有记录,所以我不确定这是否也会影响布局。
我在代码中添加了我的评论。
工作响应示例:
#map_wrapper {
margin-left: 30%; /* should match sideBar width */
overflow: hidden; /* cut off any overflow */
height: 100%; /* fill up main div height */
}
#sideBar {
width: 30%; /* adjust sidebar width as percentage of main div */
max-height: 100%; /* Never exceed main div height on small screens */
height: 400px;
position: absolute;
background: #131418;
}
#sideBar span {
color: #999;
}
.main {
max-width: 100vw; /* set max desired width for the ENTIRE set up */
height: 400px; /* set max desired height for the ENTIRE set up */
max-height: 100vh; /* make sure entire setup height never exceeds device height */
}
<!-- initilize map -->
<script>
function initMap() {var map = new google.maps.Map(document.getElementById('map'), {center: {lat: 40.674,lng: -73.945},zoom: 12,})}
</script>
<!--Your Map setup -->
<div class="main">
<div id="sideBar" class="pre-scrollable">
<span>Sidebar content goes here...</span>
</div>
<div id="map_wrapper">
<div id="map" style='width: 100%; height: 100%;'></div>
</div>
</div>
<!-- Load google API in the footer. -->
<script src="https://maps.googleapis.com/maps/api/js?key=AIzaSyDHu4QBgWONqtdOWVLTW5XZ51B1eOU6SWw&callback=initMap" async defer></script>