Ich versuche, einen Parallax-Effekt in Firefox zu erzeugen, indem ich die oberste Position der Elemente mit dem onscroll-Ereignis modifiziere. Ich habe das Onscroll-Ereignis gedrosselt, damit es den Browser nicht überlastet, und ich fügte eine Transition Top-Eigenschaft in der CSS hinzu, um die Dinge flüssiger zu machen. Das funktioniert ziemlich gut in jedem Browser, aber Firefox ist aus irgendeinem Grund extrem abgehackt. Gibt es eine Möglichkeit, diesen Übergang reibungsloser zu gestalten?Glattere Scroll-Übergänge in Firefox?
window.onscroll = throttle(function(){
var scrollDistance = window.pageYOffset || window.document.documentElement.scrollTop || window.document.body.scrollTop;
document.getElementById("back").style.top = -scrollDistance * 0.3 + "px";
document.getElementById("mid").style.top = -scrollDistance * 0.5 + "px";
document.getElementById("fore").style.top = -scrollDistance * 0.9 + "px";
}, 100);
function throttle (callback, limit) {
var wait = false;
return function() {
if (!wait) {
callback.call();
wait = true;
setTimeout(function() {
wait = false;
}, limit);
}
}
}
body{
height: 5000px;
background: url(http://lorempixel.com/output/city-q-c-1920-1920-4.jpg);
}
.parallaxEl {
width: 1920px;
height: 1080px;
position: fixed;
transition: top 0.1s;
}
#back{
background: url(http://wall.rimbuz.com/wp-content/uploads/4K-Wide-Wallpapers.jpg);
}
#mid{
background: url(https://wallpaperscraft.com/image/space_planet_background_83807_3840x2160.jpg);
}
#fore{
background: url(http://wall.rimbuz.com/wp-content/uploads/4K-HD-Background-Wallpapers.jpg);
}
<body>
<div class="parallaxEl" id="back"></div>
<div class="parallaxEl" id="mid"></div>
<div class="parallaxEl" id="fore"></div>
</body>
http://codepen.io/anon/pen/NAzBrX