Цитата:
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, время: 05:06. |