I have this example (click here) in which im trying to make the height of a google map adjustable dynamic to the span that is beside it.
Any help is very appreciated.
<!DOCTYPE html> <html> <head> <script src="https://code.jquery.com/jquery.min.js"></script> <link href="https://netdna.bootstrapcdn.com/twitter-bootstrap/2.3.2/css/bootstrap-combined.min.css" rel="stylesheet" type="text/css" /> <script src="https://netdna.bootstrapcdn.com/twitter-bootstrap/2.3.2/js/bootstrap.min.js"></script> <style> #map { width: 500px; height: 400px; } </style> </head> <body> <div class="container"> <div class="row"> <div class="span8"> <p>This is something dynamic and longer than the map.</p> <p>I want the map to adapt to this span</p> <p>N/A</p> <p>N/A</p> <p>N/A</p> <p>N/A</p> <p>N/A</p> <p>N/A</p> <p>N/A</p> <p>N/A</p> <p>N/A</p> <p>N/A</p> <p>N/A</p> <p>N/A</p> <p>N/A</p> <p>N/A</p> <p>N/A</p> <p>MAP'S HEIGHT SHOULD FILL TILL HERE AND <b>NOT</b> BE SPECIFIED WITH <b>FIXED</b> HEIGHT</p> </div> <div class="span4"> <div id="map"></div> </div> </div> </div> <script> function initMap() { var mapDiv = document.getElementById('map'); var map = new google.maps.Map(mapDiv, { center: {lat: 44.540, lng: -78.546}, zoom: 8 }); } </script> <script src="https://maps.googleapis.com/maps/api/js?callback=initMap" async defer></script> </body> </html>
The common solutions are not working.
html, body{ height: 100%; }
Advertisement
Answer
After some hours of research and CSS frustrating experiences, I guess the best way to do it is javascript.
Still for if you want a CSS only solution there is another one underneath
var initialHtml = document.getElementById('prCol1').innerHTML; setInterval(function(){ document.getElementById('prCol1').innerHTML += '<p>N/A</p>'; var divh = document.getElementById('prCol1').offsetHeight; document.getElementById('map').style.height = divh + 'px'; google.maps.event.trigger(document.getElementById('map'),'resize'); }, 1000); setInterval(function(){ document.getElementById('prCol1').innerHTML = initialHtml; var divh = document.getElementById('prCol1').offsetHeight; document.getElementById('map').style.height = divh + 'px'; google.maps.event.trigger(document.getElementById('map'),'resize'); }, 5000);
<!DOCTYPE html> <html> <head> <script src="https://code.jquery.com/jquery.min.js"></script> <link href="https://netdna.bootstrapcdn.com/twitter-bootstrap/2.3.2/css/bootstrap-combined.min.css" rel="stylesheet" type="text/css" /> <script src="https://netdna.bootstrapcdn.com/twitter-bootstrap/2.3.2/js/bootstrap.min.js"></script> <style> #map { width: 500px; height: 400px; } </style> </head> <body> <div class="container"> <div class="row"> <div class="span8" id="prCol1"> <p>This is something dynamic and longer than the map.</p> <p>I want the map to adapt to this span</p> <p>N/A</p> <p>N/A</p> <p>N/A</p> <p>N/A</p> <p>N/A</p> <p>N/A</p> <p>N/A</p> <p>N/A</p> <p>N/A</p> <p>N/A</p> <p>MAP'S HEIGHT SHOULD FILL TILL HERE AND <b>NOT</b> BE SPECIFIED WITH <b>FIXED</b> HEIGHT</p> </div> <div class="span4"> <div id="map"></div> </div> </div> </div> <script> function initMap() { var mapDiv = document.getElementById('map'); var map = new google.maps.Map(mapDiv, { center: {lat: 44.540, lng: -78.546}, zoom: 8 }); } </script> <script src="https://maps.googleapis.com/maps/api/js?callback=initMap" async defer></script> </body> </html>
<!DOCTYPE html> <html> <head> <script src="https://code.jquery.com/jquery.min.js"></script> <link href="https://netdna.bootstrapcdn.com/twitter-bootstrap/2.3.2/css/bootstrap-combined.min.css" rel="stylesheet" type="text/css" /> <script src="https://netdna.bootstrapcdn.com/twitter-bootstrap/2.3.2/js/bootstrap.min.js"></script> <style> .table { display:table; height:100%; } .table-row { display:table-row; } .table-cell { display:table-cell; width:40%; height:100%; vertical-align: top; } #map { height: 100%; width: 100%; } </style> </head> <body> <div class="container"> <div class="table"> <div class="table-row"> <div class="table-cell"> <p>This is something dynamic and longer than the map.</p> <p>I want the map to adapt to this span</p> <p>N/A</p> <p>N/A</p> <p>N/A</p> <p>N/A</p> <p>N/A</p> <p>N/A</p> <p>N/A</p> <p>N/A</p> <p>N/A</p> <p>N/A</p> <p>N/A</p> <p>N/A</p> <p>N/A</p> <p>N/A</p> <p>N/A</p> <p>MAP'S HEIGHT SHOULD FILL TILL HERE AND <b>NOT</b> BE SPECIFIED WITH <b>FIXED</b> HEIGHT</p> </div> <div class="table-cell"> <div id="map"></div> </div> </div> </div> </div> <script> function initMap() { var mapDiv = document.getElementById('map'); var map = new google.maps.Map(mapDiv, { center: {lat: 44.540, lng: -78.546}, zoom: 8 }); } </script> <script src="https://maps.googleapis.com/maps/api/js?callback=initMap" async defer></script> </body> </html>