| 
	| 
	
	| 
		
	| 
			
			 
			
				01.12.2019, 14:48
			
			
			
		 |  
	| 
		
			
			| Профессор       |  | 
					Регистрация: 14.01.2015 
						Сообщений: 12,989
					 
		
 |  |  
	| 
	
 
	| Сообщение от ozoro |  
	| Вот эта функция определяет сразу при скроле значение |  
	
 При вызове окна это имеет значение? Вам же нужно запомнить позицию прокрутки на момент вызова окна, а после закрытия его восстановить:
Open:  получить текущую позицию $(window).scrollTop(), запомнить ее (это удобно делать в .data() объекта, которым и манипулируете) и только затем $("body").css("position","fixed"). Это .css("top", scrtop) зачем?
Close:  $("body").removeAttr("style") - сбросили стили, затем восстановили позицию $(window).scrollTop(объект_хранящий_  позицию.data('имя')). И не обязательно .removeAttr("style"), можно и  $("body").css("position","static");			 Последний раз редактировалось laimas, 01.12.2019 в 15:14.
 |  |  
	| 
		
	| 
			
			 
			
				01.12.2019, 15:24
			
			
			
		 |  
	| 
		
			|  | Аспирант       |  | 
					Регистрация: 04.05.2019 
						Сообщений: 80
					 
		
 |  |  
	| 
	
 
	| Сообщение от laimas   |  
	| Это .css("top", scrtop) зачем? |  
	
 Это для того, чтобы после открытия окна страница не скролилась наверх.
 
Если не трудно, исправь мой код, по твоему варианту, а то не пойму что куда нужно вставить. |  |  
	| 
		
	| 
			
			 
			
				01.12.2019, 15:30
			
			
			
		 |  
	| 
		
			
			| Профессор       |  | 
					Регистрация: 14.01.2015 
						Сообщений: 12,989
					 
		
 |  |  
	| 
	
 
	| Сообщение от ozoro |  
	| Это для того, чтобы после открытия окна страница не скролилась наверх. |  
	
 Выбросить, это ни к чему.
 var scl = $(window).scrollTop();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'));
});
 |  |  
	| 
		
	| 
			
			 
			
				01.12.2019, 15:47
			
			
			
		 |  
	| 
		
			|  | Аспирант       |  | 
					Регистрация: 04.05.2019 
						Сообщений: 80
					 
		
 |  |  
	| laimas,Так работает, но при открытии окна страница вначале скролится наверх, а при закрытии окна возвращается в то место где кнопка вызова (то есть откуда вызывалось окно, например, страница прокручена на 1200px вниз, там кнопка вызова, нажимаем и страница прокручивается вверх в шапку сайта, а при закрытии возвращается опять на 1200px вниз).
 
 Поэтому как-то надо еще и .css("top", scrtop) прикрутить, чтобы позиция не менялась.
 |  |  
	| 
		
	| 
			
			 
			
				01.12.2019, 15:55
			
			
			
		 |  
	| 
		
			|  | Аспирант       |  | 
					Регистрация: 04.05.2019 
						Сообщений: 80
					 
		
 |  |  
	| Вот так заработало как надо: 
//открытие модального окна
$(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'));
});
Огромная благодарность за помощь! |  |  
	| 
		
	| 
			
			 
			
				01.12.2019, 15:57
			
			
			
		 |  
	| 
		
			
			| Профессор       |  | 
					Регистрация: 14.01.2015 
						Сообщений: 12,989
					 
		
 |  |  
	| 
	
 
	| Сообщение от ozoro |  
	| но при открытии окна страница вначале скролится наверх |  
	
 Значит ей добавляется что-то каким-то сценарием. Открывайте отладчик и следите за тегом body. Если это добавление некоторого класса, то при открытии:
 
$("body").removeClass('name').css("position", "fixed");
 
Если при этом $(window).scrollTop() запоминает позицию уже с этой прокруткой, то попробуйте удалять этот класс в событии show .bs.modal |  |  
	| 
		
	| 
			
			 
			
				01.12.2019, 15:59
			
			
			
		 |  
	| 
		
			
			| Профессор       |  | 
					Регистрация: 14.01.2015 
						Сообщений: 12,989
					 
		
 |  |  
	| 
	
 
	| Сообщение от ozoro |  
	| var scl = "-"+$(window).scrollTop()+"px"; |  
	
 Это все глупости, подогнать под ответ называется. Выясните причину и блокируйте ее. |  |  
	| 
		
	| 
			
			 
			
				01.12.2019, 16:06
			
			
			
		 |  
	| 
		
			|  | Аспирант       |  | 
					Регистрация: 04.05.2019 
						Сообщений: 80
					 
		
 |  |  
	| В body добавляется класс modal-open и больше ничего.Правила этого класса 
.modal-open {
    overflow: hidden;    
}
Это ведь не может влиять на то, что при открытии скролится вверх? |  |  
	| 
		
	| 
			
			 
			
				01.12.2019, 16:11
			
			
			
		 |  
	| 
		
			
			| Профессор       |  | 
					Регистрация: 14.01.2015 
						Сообщений: 12,989
					 
		
 |  |  
	| 
	
 
	| Сообщение от ozoro |  
	| Это ведь не может влиять на то, что при открытии скролится вверх? |  
	
 Нет. Но если возникает прокрутка, то либо это работа сценария какого либо, либо css, и класс может добавляться тегу html. В общем нужно анализировать/выяснять. А событий два: show - возникает на момент показа, shown - когда полностью показано. Выяснив причину, можно устранять ее еще до полного показа окна.
 
PS. А собственно да, вы же пытаетесь оставить при fixed ту позицию, которая была на момент прокрутки? Все верно, запомнить ее, и на это же значение с отрицательным знаком вверх. Это я запутал. )			 Последний раз редактировалось laimas, 01.12.2019 в 16:16.
 |  |  
	| 
		
	| 
			
			 
			
				01.12.2019, 16:22
			
			
			
		 |  
	| 
		
			|  | Аспирант       |  | 
					Регистрация: 04.05.2019 
						Сообщений: 80
					 
		
 |  |  
	| Буду икать причину... 
Еще раз благодарю за помощь.
 
Еще вопрос, вот хочу тебе отзыв оставить в благодарность, да и некоторым помогающим ранее в других темах пытался, но постоянно получаю сообщение:
   
Я тебе оставлял отзыв, но после уже многим оставил... это что, глюк (баг) какой-то?			 Последний раз редактировалось ozoro, 01.12.2019 в 16:39.
 |  |  |  |