Относительный режим Skrollr начинается за пределами экрана и заканчивается раньше

Каждый раз, когда я использую skrollr, я, кажется, сталкиваюсь с этой проблемой по пути, и я не уверен, в чем проблема. Мне просто нужен простой переход, начинающийся, когда элемент только появляется в поле зрения, и заканчивающийся, когда он покидает поле зрения. Ничего особенного. Нет видового экрана. Не абсолютный.

Я использую следующее:

<section
  id="lets-talk"
  class="frontpage-section"
  data-bottom-top="background-position: 50% 200px;"
  data-top-bottom="background-position: 50% 0px;"
  data-anchor-target="#lets-talk">

Что-то должно быть не так в приведенном выше коде. Все расчеты происходят не в том месте.

(все 0–200 пикселей упоминаются ниже в отношении положения фона по оси Y)

Я ожидаю, что поведение будет 200 пикселей, если элемент находится внизу экрана, за пределами вашего представления. Когда он находится в центре, он должен быть 100px. Когда он закончит выходить за верхнюю часть экрана, он должен быть 0px.

Но это вообще так не работает. Когда я прокручиваю так, чтобы он был внизу моего экрана, он составлял 94,5 пикселя и останавливался на 0 пикселях, когда он находился в центре моего экрана. Он анимируется за пределами экрана, примерно на половине страницы он наконец достигает 200 пикселей (в два раза больше высоты самого контейнера).

Здесь нет ничего особенного, элемент #lets-talk содержится в статических/относительных элементах, как обычная страница, без определенных позиций высоты или смещений полей/позиций.

Вот рисунок, показывающий разницу между желаемой и фактической областью анимации, на случай, если мое объяснение не поможет:

ожидаемый и фактический результат


Посмотрите на скриншот ниже, показывающий изображение, которое явно находится в центре браузера. Установленная позиция фона (видимая в правом верхнем углу) равна 50% 1.821px, а не около 50% 100px.

Как вы понимаете, прокрутка всего на несколько пикселей вниз завершает переход на 50% 0px, элемент все еще четко виден на экране. Вам нужно прокрутить вверх сотни пикселей после того, как элемент находится за пределами экрана, чтобы перейти к началу анимации в 50% 200px.

Других элементов с идентификатором «давайте поговорим» на странице нет.

Skrollr, кажется, находится в каком-то режиме смещения или что-то сбивает с толку.

неправильное позиционирование скроллра

Дополнительная информация:

CSS (в основном сбрасывает):

background: url(images/app-development.jpg) 50% 0px no-repeat;
background-attachment: fixed;
color: #EFF1C2;
position: relative;
width: auto;
margin: 0 auto;
display: block;
text-align: left;

Контейнеры все позиция: относительная, отображение: блок, без назначенной информации, связанной с высотой/полем/положением. Элемент виден почти на 4500 пикселей вниз по странице. Полный веб-сайт имеет высоту около 5800 пикселей.

Существует элемент #skrollr-body, охватывающий всю страницу без назначенных стилей.

Никакой javascript не мешает этому разделу или любому родительскому разделу.

Версия Skrollr: skrollr 0.6.25 (24 мая 2014 г.)


person Radley Sustaire    schedule 03.06.2014    source источник


Ответы (1)


Я исправил эту проблему, определив чистую высоту целевого элемента.

Пример:

.target-elm { min-height: 780px; }
person federico    schedule 06.06.2014