Цитата:
Open: получить текущую позицию $(window).scrollTop(), запомнить ее (это удобно делать в .data() объекта, которым и манипулируете) и только затем $("body").css("position","fixed"). Это .css("top", scrtop) зачем? Close: $("body").removeAttr("style") - сбросили стили, затем восстановили позицию $(window).scrollTop(объект_хранящий_ позицию.data('имя')). И не обязательно .removeAttr("style"), можно и $("body").css("position","static"); |
Цитата:
Если не трудно, исправь мой код, по твоему варианту, а то не пойму что куда нужно вставить. |
Цитата:
var scrtop = "-"+scl+"px"; //открытие модального окна $(document).on("shown.bs.modal", ".modal", function () { // Когда модальное окно открыто, фиксируем элемент body $(this).data({top: $(window).scrollTop()}); $("body").css("position", "fixed"); }); // закрытие модального окна $(document).on("hidden.bs.modal", ".modal", function () { // Когда модальное окно скрыто... $("body").css("position", "static"); $(window).scrollTop($(this).data('top')); }); |
laimas,
Так работает, но при открытии окна страница вначале скролится наверх, а при закрытии окна возвращается в то место где кнопка вызова (то есть откуда вызывалось окно, например, страница прокручена на 1200px вниз, там кнопка вызова, нажимаем и страница прокручивается вверх в шапку сайта, а при закрытии возвращается опять на 1200px вниз). Поэтому как-то надо еще и .css("top", scrtop) прикрутить, чтобы позиция не менялась. |
Вот так заработало как надо:
//открытие модального окна $(document).on("shown.bs.modal", ".modal", function () { // Когда модальное окно открыто, фиксируем элемент body $(this).data({top: $(window).scrollTop()}); var scl = "-"+$(window).scrollTop()+"px"; $("body").css("position", "fixed").css("top", scl); }); // закрытие модального окна $(document).on("hidden.bs.modal", ".modal", function () { // Когда модальное окно скрыто... $("body").css("position", "static"); $(window).scrollTop($(this).data('top')); }); Огромная благодарность за помощь! |
Цитата:
$("body").removeClass('name').css("position", "fixed"); Если при этом $(window).scrollTop() запоминает позицию уже с этой прокруткой, то попробуйте удалять этот класс в событии show.bs.modal |
Цитата:
|
В body добавляется класс modal-open и больше ничего.
Правила этого класса .modal-open { overflow: hidden; } Это ведь не может влиять на то, что при открытии скролится вверх? |
Цитата:
PS. А собственно да, вы же пытаетесь оставить при fixed ту позицию, которая была на момент прокрутки? Все верно, запомнить ее, и на это же значение с отрицательным знаком вверх. Это я запутал. ) |
Буду икать причину...
Еще раз благодарю за помощь. Еще вопрос, вот хочу тебе отзыв оставить в благодарность, да и некоторым помогающим ранее в других темах пытался, но постоянно получаю сообщение: ![]() Я тебе оставлял отзыв, но после уже многим оставил... это что, глюк (баг) какой-то? |
Часовой пояс GMT +3, время: 15:42. |