Переход к блоку при листинге

195
30 ноября 2017, 03:44

Здравствуйте. Есть обычная разметка сайта, с обычными блоками. Ниже есть блок с атрибутом: height: 100%

.block-1 { background: green; } 
.block-2 { background: yellow; } 
.block-3 { background: blue; } 
 
.block-1, .block-2, .block-3, .footer { 
  color: #fff; 
  padding: 10px; 
} 
 
.footer { 
  background: red; 
  height: 100%; 
}
<div class="block-1">Блок 1</div> 
<div class="block-2">Блок 2</div> 
<div class="block-3">Блок 3</div> 
 
<div class="footer"> 
  Блок с высотой 100% 
</div>

Вопрос: Каким образом сделать чтобы когда пользователь пролистал все содержимое блоков 1 - 2 - 3, как только дошел до низа последнего блока (block-3). и если он еще начал листать ниже, его плавно перекидывает на блок footer с высотой 100%.

Буду благодарен за информацию.

Answer 1

Думаю, что правильно понял... Скажу сразу, что тут пример не работает, не знаю почему, можно его скопировать запустить на компе будет работать. можно еще добавить плавности подъема P.S. Кстати в codepen тоже не работает...

/* захватываем элемент footer*/ 
var footer = document.querySelector('.footer'); 
window.onscroll = function() { 
 
  /**/ 
  /*динамический во время скрола получаем его координаты*/ 
  var footerCor = footer.getBoundingClientRect().top; 
  /*динамический во время скрола получаем height body*/ 
  var doc = document.body.getBoundingClientRect().height; 
 
  var cor = footerCor - doc; 
 
  /* и тут условие, когда footer появляется в зоне видимости экрана */ 
  if (cor <= 0 && cor >= -100) { 
    /*срабатыевает событие scrollIntoView(top) для footer*/ 
    footer.scrollIntoView(top); 
  } 
}
* { 
  margin: 0; 
  padding: 0; 
} 
 
html, 
body { 
  width: 100%; 
  height: 100%; 
  background: #272727; 
} 
 
.block-1 { 
  background: green; 
} 
 
.block-2 { 
  background: yellow; 
} 
 
.block-3 { 
  background: blue; 
} 
 
.block-1, 
.block-2, 
.block-3, 
.footer { 
  color: #fff; 
  padding: 10px; 
} 
 
.block-3 { 
  height: 120%; 
} 
 
.footer { 
  background: red; 
  height: 100%; 
}
<div class="block-1">Блок 1 
</div> 
<div class="block-2">Блок 2 
</div> 
<div class="block-3"> 
</div> 
 
<div class="footer"> 
  Блок с высотой 100% 
</div>

READ ALSO
Фильтр с разделением результатов на jquery/js

Фильтр с разделением результатов на jquery/js

Доброго времени суток, сообщество! Есть вот такой вот фильтр: http://jsfiddlenet/xvs9jL1c/ Но, к сожалению, не совсем устраивает своим функционалом и у меня...

168
Обратный отсчёт времени на javascript

Обратный отсчёт времени на javascript

Мне надо сделать таймер обратного отсчета до 31 декабряБолее менее понимаю, каковым должен быть алгоритм:

203
Телефонная книга js

Телефонная книга js

Необходимо реализовать функцию, через которую можно будет управлять телефонной книгойНужно реулизовать всего 3 команды: ADD(добавляет контакт,...

1115
Двойная авторизация на soap сервере

Двойная авторизация на soap сервере

Не получается авторизоваться на сервере soap, я новичок в этомВ документации к апи написано, что там двойная авторизация

248