Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 04.08.2014, 17:08
Аспирант
Отправить личное сообщение для MadChild Посмотреть профиль Найти все сообщения от MadChild
 
Регистрация: 22.10.2012
Сообщений: 34

Видимость блока на экране
Добрый день.
У меня есть блок, который становится зафиксированным при прокрутке страницы. То есть крутим страницу, когда страница пролистывается более чем на 150px [$(window).scrollTop()], то блок становится position:fixed
На некоторых страницах этот блок длинный и при прокрутке страницы до конца он наезжает на футер, чего не хотелось бы.
В голове есть только 2 возможных решениях:

1) считаем суммарную ширину страницы, отнимаем высоту экрана, отнимаем высоту футера и проверяем.
Если скролл страницы дошел до полученнго значения, то блоку ставим position:relative и margin-top

2) если футер попал в поле отображения на экране, то блоку ставим position:relative и margin-top


вот только я не знаю,
как подсчитать общую высоту всей страницы(не путать с высотой экрана)
или как проверить, видим футер на странице или еще находится за пределами экрана
Ответить с цитированием
  #2 (permalink)  
Старый 04.08.2014, 18:18
Аватар для ixth
Профессор
Отправить личное сообщение для ixth Посмотреть профиль Найти все сообщения от ixth
 
Регистрация: 19.01.2010
Сообщений: 354

Посмотри как тут сделано: http://codepen.io/ixth/pen/nrJla
Ответить с цитированием
  #3 (permalink)  
Старый 04.08.2014, 19:18
Профессор
Отправить личное сообщение для Rise Посмотреть профиль Найти все сообщения от Rise
 
Регистрация: 07.11.2013
Сообщений: 4,662

MadChild,
var f = $('#footer');
$(window).scroll(function() {
	var w = $(this);
	if (w.scrollTop() > (f.offset().top - w.height())) {
		// footer в окне
	} else {
		// footer вне окна
	}
});
Ответить с цитированием
  #4 (permalink)  
Старый 05.08.2014, 10:48
Аспирант
Отправить личное сообщение для MadChild Посмотреть профиль Найти все сообщения от MadChild
 
Регистрация: 22.10.2012
Сообщений: 34

Сообщение от Rise Посмотреть сообщение
MadChild,
var f = $('#footer');
$(window).scroll(function() {
	var w = $(this);
	if (w.scrollTop() > (f.offset().top - w.height())) {
		// footer в окне
	} else {
		// footer вне окна
	}
});
то что надо
Ответить с цитированием
  #5 (permalink)  
Старый 25.11.2014, 02:53
Интересующийся
Отправить личное сообщение для yurik417 Посмотреть профиль Найти все сообщения от yurik417
 
Регистрация: 31.08.2011
Сообщений: 17

Воспользуйтесь плагином http://masscode.ru/index.php/k2/item/48-lifixar
У него есть замечательный параметр "wrapper" как раз для этих целей
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Плавное раскрытие и сворачивание блока StyLLeR jQuery 6 07.07.2014 16:00
Движение по элементам блока без перезапуска функции выпадающеего меню. tutelaris Элементы интерфейса 4 26.04.2013 09:15
вычисление и фиксация ширины блока konstantin-mn jQuery 2 27.08.2012 11:42
слайд панели tadjik1 Элементы интерфейса 22 02.04.2012 17:13
Два блока div разъезжаются при скроллинге окна браузера. call007 jQuery 0 03.04.2011 16:21