Stworzyłem zwój paralaksy, który działa poprawnie w firefoxie, jednak w przeglądarce Chrome podczas przewijania jest lekki przeskok na tekście. click here scroll to the about section. Nie jestem pewien, czy jest to problem z css lub JS. Poniżej znajduje się urywek w mojej funkcji paralaksyProblem z przewijaniem paralaksy - szarpanie elementu div podczas przewijania w przeglądarkach webkit
Czy ktoś wie, jak rozwiązać ten problem?
$(document).ready(function(){
// Cache the Window object
$window = $(window);
// Cache the Y offset and the speed of each sprite
$('[data-type]').each(function() {
$(this).data('offsetY', parseInt($(this).attr('data-offsetY')));
$(this).data('Xposition', $(this).attr('data-Xposition'));
$(this).data('speed', $(this).attr('data-speed'));
});
// For each element that has a data-type attribute
$('[data-type="background"]').each(function(){
// Store some variables based on where we are
var $self = $(this),
offsetCoords = $self.offset(),
topOffset = offsetCoords.top;
// When the window is scrolled...
$(window).scroll(function() {
// If this section is in view
if (($window.scrollTop() + $window.height()) > (topOffset) &&
((topOffset + $self.height()) > $window.scrollTop())) {
// Scroll the background at var speed
// the yPos is a negative value because we're scrolling it UP!
var yPos = -($window.scrollTop()/$self.data('speed'));
// If this element has a Y offset then add it on
if ($self.data('offsetY')) {
yPos += $self.data('offsetY');
}
// Put together our final background position
var coords = '50% '+ yPos + 'px';
// Move the background
$self.css({ backgroundPosition: coords });
$('[data-type="scroll-text"]', $self).each(function() {
var $text= $(this);
var pos = ($window.scrollTop()/10) * $text.data('speed');
var curP = $text.css('margin-top');
var is_chrome = navigator.userAgent.toLowerCase().indexOf('chrome') > -1;
if(is_chrome) {
$text.animate({
paddingTop: pos,
}, 200, 'linear', function() {
// Animation complete.
});
} else {
$text.css('padding-top', pos);
}
});
}; // in view
}); // window scroll
}); // each data-type
}); // document ready
Twój kod będzie korzystać z prostych optymalizacji: 1) Zadzwoń '$ (okno) .scrollTop()' tylko raz i buforowania wartości, 2) Zapytanie o DOM dla '[data-text]' elementów zewnętrznych słuchacza wydarzeń. –
@IanKuca można rozwinąć na tym abitować, a nawet edytować JS na github. Nie jestem najlepszy w JavaScript – NewBoy
http://pastebin.com/JCaA7T6A –