У меня есть элемент div, содержащий карту Google. Div находится на половине страницы и начинается с середины (более или менее).
Возможно ли, что его высота будет увеличиваться при прокрутке вниз (и уменьшаться при прокрутке вверх)?
У меня есть сценарий, который это делает, но он не очень дружелюбный.
и текущий сценарий:
// change map size when scroll down
$(window).scroll(function() {
var scroll = $(window).scrollTop();
if (scroll >= 450) {
$("#map-warp").addClass("change-map-canvas"); // removed the . from class
$("#map-warp").css("margin-top", "40px"); ; // change margin from top for close infoWindow button
} else {
$("#map-warp").removeClass("change-map-canvas"); // removed the . from class
$("#map-warp").css("margin-top", "10px"); ;
}
});
@Sirence - ну, по ссылке, которую я прикрепил выше, вы можете видеть, что при прокрутке вниз размер карты изменяется как прыжок.
@roi вы пробовали мой код ниже? это работает как шарм для меня. Карта больше не прыгает. Если да, то буду признателен, если вы отметите мой ответ как правильный :)



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Попробуйте вот это:
$(window).scroll(function() {
var scroll = $(window).scrollTop();
var topMargin = 10 - $(window).scrollTop();
if (scroll >= 570) {
$("#map-warp").addClass("change-map-canvas");
$("#map-warp").css("margin-top", "40px");
} else {
$("#map-warp").removeClass("change-map-canvas");
$("#map-warp").css("margin-top", topMargin+"px");
}
});
Пока прокрутка не достигнет 570, карта всегда будет оставаться такой же, как и в начале. После этого он будет плавно следовать за прокруткой.
Идеально! благодарю вас! Вы можете словами объяснить, что вы сделали?
Что вы имеете в виду под «не очень дружелюбным сценарием»? Не могли бы вы подробнее рассказать об этом? Функция .scroll, указанная в вашем примере, была бы лучшим способом реализовать это, так что ваша проблема с изменением размера вашего div?