【问题标题】:change background images using mouse wheel plugin使用鼠标滚轮插件更改背景图像
【发布时间】:2016-06-17 20:26:02
【问题描述】:

我正在尝试在使用鼠标滚轮滚动/向下滚动时更改页面的背景图像。某事like this page here

我希望更改三个不同的背景图像(即当用户向下滚动时增加/当用户向上滚动时减少)。

See jsfiddle here(实际上并没有像希望的那样工作)。

另请参阅下面的代码。

我希望很清楚我想要达到的目标。如果没有,请告诉我,我可以提供更多信息。

CSS

.bgImage {
  position: absolute;
  top: 0;
  left: 0;
  display: block;
  width: 100%;
  z-index: 1;
}

body, html, #scene, .bgImage {
  height: 100%; 
}

.home{
  background: url("http://cdn3-www.wrestlezone.com/assets/uploads/gallery/ric-flair/gettyimages-93353438.jpg") center center no-repeat;
  background-size: cover;
}

.brett {
  background: url("http://2.bp.blogspot.com/-69o3lsK5MrQ/ThhlOTxGQlI/AAAAAAAAEfY/e0AJF-6sKBw/s1600/bret_hart_-_bret_hart_74.jpg") center center no-repeat;
  background-size: cover;
}

.hulk{
background: url("https://tse3.mm.bing.net/th?id=OIP.M44755b5d2bade01af176621c77ebe279o2&pid=15.1&P=0&w=300&h=300") center center no-repeat;
  background-size: cover;
}

HTML

<div class="bgImage"></div>

JS

var pages = ['home','brett','hulk'];
var page = 0;

$(document).ready(function(){

    $('.bgImage').on('mousewheel', function (e) {
        if (e.deltaY>0) {
            page += 1;
            if(page >= pages.length){
                return;
            }else{
                jQuery('.bgImage').addClass(pages[page]);
            }
        } else {
            page -= 1;
            jQuery('.bgImage').removeClass(pages[page]);
        }
        e.preventDefault();
    });
});

【问题讨论】:

    标签: javascript jquery css mouseevent mousewheel


    【解决方案1】:

    马上我可以告诉您,您可能需要一个更强大的滚动框架来模拟您链接的网站。尝试查看scrollmagic.io 了解如何执行此操作的想法。一种看待它的方法是,如果您愿意的话,您实际上是在捕捉滚动并将它们应用于事件的“时间线”。

    要让您的示例正常工作,请查看此小提琴:

    https://jsfiddle.net/1nrL5gv1/20/

    我添加的一件重要的事情是在应用新类之前删除所有现有类。这样,只会显示最近的图像,您不必担心 css 特异性/顺序。

    function cleanUpBg() { for(i = 0; i < pages.length; i++) { bgEl.removeClass(pages[i]); } }

    我还添加了超时功能,因此您实际上可以一次触发一个图像更改。同样,我强烈建议您查看现有的滚动库,因为它们可以让您更快地进入这样的项目。

    【讨论】:

    • 这很好,但如果快速滚动,每次滚动会更改不止一个图像
    • @phantom 是的,同意,我添加了一个轻微的超时创可贴,但理想情况下,它应该是三个不同的 div,具有某种增量阈值/约束逻辑,以允许平滑褪色。试图将其保留在 op 的原始设置内,但绝对可以根据他们的需要进行扩展。
    猜你喜欢
    • 1970-01-01
    • 2017-09-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-04
    • 2014-04-05
    • 1970-01-01
    相关资源
    最近更新 更多