使用Parallax.js jQuery插件时,背景图像放大了

时间:2017-08-01 19:44:55

标签: javascript jquery parallax parallax.js

我添加了parallax.js jQuery插件并且效果正常,但不正确。背景被放大并且图像在滚动时出现故障。我添加了文档中列出的其他变量来修复这些问题,并且它们按预期工作。但是,出乎意料的是,它们也破坏了我在'#sections'div中使用JS动态创建的内容,这是一个填充了JavaScript对象的空div?

function parallaxBackground (){
    var yPos = -(($window.scrollTop() - $this.offset().top) / 5);// Scroll speed      
    var coords = '1% '+ yPos + 'px';// Background position       
    $this.css({ backgroundPosition: coords });// Move the background
}   
parallaxBackground();//Call parallaxBackground function

知道为什么这个函数会擦除使用JS创建的HTML内容? JS的其余部分仍然有效,它只是停止工作的'#sections'div。滚动,显示和悬停效果仍然完好无损。这是代码的链接。

https://gist.github.com/flyspaceage/075dcf3a6d6bd65edf0f456036eb9bd8

请阅读FlySpaceAge的评论以获取更多信息。

1 个答案:

答案 0 :(得分:0)

我最后更改了脚本并添加了parallax documentation中的一些变量。虽然此解决方案确实修复了功能,但背景图像现在已放大。虽然不完美,但此功能确实解决了我发布的初始问题。

(function($){
$(document).ready(function(){
    $('#sections').on('click', '.back-to-top', scrollToTop);
    $('#jump-menu li').click(scrollToAnchor);
    $('.parallax-window').parallax({imageSrc: '../images/background.png'});     
});

function scrollToTop(event){
    event.preventDefault();

    $('html, body').animate({
        scrollTop: 0
    }, 500);
}

function scrollToAnchor(event){
    event.preventDefault();

    var target = $(this).attr('rel');
    var offset = $(target).offset();

    $('html, body').animate({
        scrollTop: offset.top - 270
    }, 500);
}

/* PARALLAX functionality*/
function parallaxBackground (){

    var parallaxWidth = Math.max($(window).width() * 1, 1 ) | 0;

    $('.parallax-window').width(parallaxWidth); 

}

parallaxBackground();


})(jQuery);