jQuery scrollTop и эффект параллакса: дрожание окна браузера при прокрутке в самом низу
У меня есть небольшой сценарий, который создает эффект параллакса. Поэтому я создал атрибут данных со скоростью и типом данных для выбора элементов параллакса. В то же самое время, один из элементов исчезает при прокрутке вниз.
Сценарий работает нормально, но, к сожалению, при прокрутке до нижней части сайта (и при его "пролистывании") сайт дрожит как ад. Кажется, это часть метода yPos и scrollTop.
У вас есть идеи, в чем проблема?
Вот разметка:
<section class="slider">
<img src="images/hafen.jpg" class="slide" data-type="parallax" data-speed="3">
<div class="claim" data-type="parallax" data-speed="6">
<h1>SOME TEXT</h1>
</div>
<div class="arrow-down" data-type="parallax" data-speed="3">
<img src="images/arrow-down.png" alt="">
</div>
</section>
<section class="content" data-type="parallax" data-speed="1">
<div class="wrapper">
<img src="images/content.png" alt="">
</div>
<section>
Это мой сценарий:
$(window).scroll(function() {
var box;
$("[data-type=\"parallax\"]").each(function() {
var $bgobj, position, yPos;
$bgobj = $(this);
yPos = -($window.scrollTop() / $bgobj.data("speed"));
position = parseInt(yPos);
return $bgobj.css({
marginTop: position
});
});
box = $(".claim");
return box.css({
"opacity": 1 - $window.scrollTop() / 400
});
});
1 ответ
Кажется, ты пропал (
а также )
вокруг window
Вот:
yPos = -($window.scrollTop() / $bgobj.data("speed"));
Должно быть:
yPos = -($(window).scrollTop() / $bgobj.data("speed"));
а вы <section>
не закрыт в самом конце. Должно быть:
...
</section>
Не уверен, как должен выглядеть ожидаемый результат с правильным CSS, но похоже, что он работает с вышеуказанными изменениями:
$(function () {
$(window).scroll(function () {
var box;
$("[data-type=\"parallax\"]").each(function () {
var $bgobj, position, yPos;
$bgobj = $(this);
yPos = -($(window).scrollTop() / $bgobj.data("speed"));
position = parseInt(yPos);
return $bgobj.css({
marginTop: position
});
});
box = $(".claim");
return box.css({
"opacity": 1 - $window.scrollTop() / 400
});
});
});