javascript - 使 Javascript/JQuery 视差幻灯片效果适用于类

标签 javascript jquery scroll parallax

我有以下脚本,并且希望使其也适用于类而不是仅适用于 id:

<script>
function parallax(){
var prlx_1 = document.getElementById('banner-welcome');
prlx_1.style.top = -(window.pageYOffset / 8)+'px';
}
window.addEventListener("scroll", parallax, false);
</script>

我尝试执行以下操作,但不起作用:

<script>
function parallax(){
var prlx_1 = document.getElementsByClassName('banners');
prlx_1.style.top = -(window.pageYOffset / 8)+'px';
}
window.addEventListener("scroll", parallax, false);
</script>

我也尝试过将其更改为 JQuery(至少我认为我希望我做到了),但它也不起作用:

<script>
var prlx = $('.banners');
$(window).on('scroll', function () {
prlx.css({ 'top': -(window.pageYOffset / 8)+'px' });
});
});
</script>

这是两个示例,一个有效,一个无效:

第一个示例有效: http://jsfiddle.net/ecb3744t/

第二个例子不起作用 http://jsfiddle.net/3mc4dcus/

第三个示例不起作用 http://jsfiddle.net/wvtqke36/

最佳答案

我已经修改了您的第三个示例,这应该可以工作:

var prlx = $('.banners');
$(window).on('scroll', function () {
    $(prlx).css({ 'top': -(window.pageYOffset / 2)+'px' }); 
});

您的 Fiddle 不包含 jQuery,并且您的代码中存在语法错误。

fiddle :modified example 3

如果您不想使用 jQuery,请使用以下代码:

function parallax(){
    var prlx = document.getElementsByClassName('banners');
    for(var i=0; i < prlx.length; i++) {
        var elem = prlx[i];
        elem.style.top = -(window.pageYOffset / 2)+'px';        
    }
}
window.addEventListener("scroll", parallax, false);

请注意,document.getElementsByClassName() 返回一个元素数组。因此,您必须循环遍历每个元素并应用转换。

fiddle :modified example 1

关于javascript - 使 Javascript/JQuery 视差幻灯片效果适用于类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28583709/

相关文章:

jquery - 使用 jQuery 滚动到 div 中的元素并垂直居中

javascript - 可以分配 var 并在 attr 中使用吗?

javascript - 无法读取 Reactnative 中 null 错误的属性 'bindings'

javascript - 如何将表格 html 表格导出为 PDF?

javascript - Node.js - 如果我在 I/O 和回调仍在运行时调用 response.end 会发生什么?

javascript - 提取部分 JSON 对象结果

html - 设置表格高度似乎改为添加 margin-top

javascript - 使用 jquery 获取焦点(或滚动到 View )到面板

javascript - 如何根据输入字段禁用 <td>

javascript - 如何滚动到文本区域中光标的位置?