Установка высоты Google Maps для высоты изображения

0

На каждой странице у меня есть баннер наверху. Баннеры - 1980px на 657px.

HTML:

    <div class="services banner">
        <img src="images/services/banner.jpg">
    </div>

CSS:

    .banner {
        width: 100%;
    }

    .banner img {
        width: 100%;
        max-width: 100%;
        height: auto;
        display: block;
    }

Таким образом, высота зависит от размера изображения и видового экрана.

На моей странице контакта я хочу использовать карту Google вместо баннера. Моя проблема в том, что я хочу, чтобы она была той же высоты, что и баннеры. Я надеялся, что могу просто поместить прозрачный баннер внутри div #map, но все классы или содержимое, добавленные в #map div, исчезнут.

Любые идеи, как достичь этого с помощью CSS или JS?

Используя ответ Empi, я придумал следующее решение:

HTML:

    <div class="contact banner">
        <img id="dummy" src="images/contact/banner.jpg" style="display: none;">
    </div>
    <div id="googlemap">
        <div id="map"></div>
    </div>

CSS:

    #googlemap {
        width: 100%;
    }

    #map {
        width: 100%;
        height: 100%;
        background: #001f37;
        margin: 0 auto;
    }

JS:

$(window).load(function(){
    var imgHeight = $('#dummy').height();
    $('#googlemap').height(imgHeight);
});

$(window).resize(function(){
    var imgHeight = $('#dummy').height();
    $('#googlemap').height(imgHeight);
});

Это немного хаки, но это работает.

Теги:
google-maps

3 ответа

1
Лучший ответ

Вы имеете в виду что-то вроде этого?

Получите ширину/высоту в jQuery. Примените его к картам. Дисплей: нет на изображении. Немного грязный ответ, но он делает трюк. Я не знаю, как вы это сделаете в чистом css.


HTML

<div id="con">
<img id="img" src="http://dummyimage.com/600x200/000/fff.jpg" />
<iframe id="maps" src="https://www.google.com/maps/embed?pb=!1m18!1m12!1m3!1d76608.9275331472!2d23.1560658!3d53.127625249999994!2m3!1f0!2f0!3f0!3m2!1i1024!2i768!4f13.1!3m3!1m2!1s0x471ffc048f41971d%3A0x72317dcc8bf07b2c!2sBia%C5%82ystok!5e0!3m2!1snl!2spl!4v1397752663976"></iframe>
</div>

CSS

#con {
  height: auto;
  width: auto;
  background-color: gray;
}

#img {
  display: none;
}

#maps {    
  margin: 0;
  padding: 0;
  display: block;
  border: none;
}

JQuery

var imgWidth = $('#img').width();
var imgHeight = $('#img').height();

$('#maps').width(imgWidth);
$('#maps').height(imgHeight);
  • 0
    Это привело меня на правильный путь, спасибо.
0

Почему бы вам не просто установить высоту div #map в auto, как и с вашим баннером?

Есть ли причина, по которой вы не могли этого сделать?

  • 0
    Если вы просто установите высоту на авто, карта не будет отображаться. Прямо сейчас у меня есть: #map {width: 100%; фон: # 001f37; поле: 0 авто; высота: 60%; }
  • 0
    Хорошо, извините, ваш баннер настроен на высоту изображения внутри, верно? Я думаю, вы могли бы либо узнать, какова высота вашего изображения (150px?), И вручную установить высоту #map div в то же значение. В качестве альтернативы, если ваше изображение часто меняет размеры (не знаю, почему это так), вы можете загрузить его за div карты (используя z-index) и увеличить масштаб карты до 100%. Я думаю, что это был бы уродливый способ пойти об этом все же.
0

Я совершенно уверен, что когда вы используете, скажите Google Maps, к которому нужно добавить div, он удаляет весь контент из этого div. В этом случае это, вероятно, включает в себя ваше изображение.

  • 0
    Да, я упоминал об этом в своем посте. Я просто пытаюсь найти способ сохранить те же размеры, что и баннеры, если это возможно.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню