我希望有人能帮我解决我遇到的问题。不幸的是,我在JS方面没有很好的经验,所以我遇到了一些麻烦。
我有一个网站,有一个完整的页面背景图像。当用户滚动时,背景图像会发生变化。不久前,我从Stack溢出的另一篇文章中得到了这个解决方案,但我似乎找不到那篇文章来拯救我的生命,否则我就会在这里发布这个帖子。
在任何情况下,下面都有一个代码片段。我现在面临的三个问题是:
提前感谢您的帮助!
在Windows上,它能识别出一个完整的滚动卷,这是一个伟大的滚动,但在Mac上,一个完整的滚动将在一次循环所有的图像。这只是Mac的事因为它很烦人吗?
$(document).ready(function() {
var index = 1;
var maxIndex = $('.content').length;
var endAnim = true;
$('body').on('mousewheel DOMMouseScroll', function(e) {
if (endAnim) {
if (e.originalEvent.wheelDelta / 90 > 0) {
if (index > 1) {
endAnim = false;
index--;
$('.content-' + (index)).addClass('main-content').fadeIn(500);
$('.content-' + (index + 1)).fadeOut(500, function() {
$(this).removeClass('main-content');
endAnim = true;
});
}
} else {
if (index < maxIndex) {
endAnim = false;
index++;
$('.content-' + (index)).addClass('main-content').fadeIn(500);
$('.content-' + (index - 1)).fadeOut(500, function() {
$(this).removeClass('main-content');
endAnim = true;
});
}
}
}
});
});
.main-content {
top: 0 !important;
z-index: 100 !important;
}
.pageContainer {
width: 100%;
height: 100%;
overflow-y: hidden;
background: white;
}
.content {
position: fixed;
top: 100%;
left: 0;
width: 100%;
height: 100%;
z-index: 0;
display: flex;
align-items: center;
text-align: center;
}
.content-1 {
background-image: url('https://preview.ibb.co/f88WDy/test_image_1.jpg');
background-size: cover;
}
.content-2 {
background-image: url('https://preview.ibb.co/fbVNLd/test_image_2.jpg');
background-size: cover;
}
.content-3 {
background-image: url('https://preview.ibb.co/i79Gfd/test_image_3.jpg');
background-size: cover;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="pageContainer">
<div class="content content-1 main-content">
<div class="container">
<div class="row">
<div class="col-md-12">
<h1>Lorem Ipsum One</h1>
</div>
</div>
</div>
</div>
<div class="content content-2">
<div class="container">
<div class="row">
<div class="col-md-12">
<h1>Lorem Ipsum Two</h1>
</div>
</div>
</div>
</div>
<div class="content content-3">
<div class="container">
<div class="row">
<div class="col-md-12">
<h1>Lorem Ipsum Three</h1>
</div>
</div>
</div>
</div>
</div>
发布于 2018-05-17 21:55:01
你可以用模数运算。下面是一个示例:
$(document).ready(function() {
var index = 1;
$('body').on('mousewheel DOMMouseScroll', function(e) {
$('.content-' + index).removeClass('main-content');
index = index%3 + 1;
$('.content-' + index).addClass('main-content');
});
});
.main-content {
top: 0 !important;
z-index: 100 !important;
}
.pageContainer {
width: 100%;
height: 100%;
overflow-y: hidden;
background: white;
}
.content {
position: fixed;
top: 100%;
left: 0;
width: 100%;
height: 100%;
z-index: 0;
display: flex;
align-items: center;
text-align: center;
}
.content-1 {
background-image: url('https://preview.ibb.co/f88WDy/test_image_1.jpg');
background-size: cover;
}
.content-2 {
background-image: url('https://preview.ibb.co/fbVNLd/test_image_2.jpg');
background-size: cover;
}
.content-3 {
background-image: url('https://preview.ibb.co/i79Gfd/test_image_3.jpg');
background-size: cover;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="pageContainer">
<div class="content content-1 main-content">
<div class="container">
<div class="row">
<div class="col-md-12">
<h1>Lorem Ipsum One</h1>
</div>
</div>
</div>
</div>
<div class="content content-2">
<div class="container">
<div class="row">
<div class="col-md-12">
<h1>Lorem Ipsum Two</h1>
</div>
</div>
</div>
</div>
<div class="content content-3">
<div class="container">
<div class="row">
<div class="col-md-12">
<h1>Lorem Ipsum Three</h1>
</div>
</div>
</div>
</div>
</div>
扩展了答案,,我现在在大学,所以我稍后会详细解释这一点。我创建了一个hiddenScroll,其中包含一个大小为屏幕大小3倍的元素。然后,我将hiddenScroll的滚动位置更改为屏幕大小的1倍,以便当scrollTop变为0时,滚动事件触发第二个if,或者当scrollTop变为屏幕大小的3x时触发第一个if。
实际上,您正在从透明div (因此是隐藏div)中滚动滚动条。
$(document).ready(function() {
var index = 1;
$(".hiddenScroll").scrollTop($( document ).height())
$('body').on('mousewheel DOMMouseScroll', function(e) {
var hiddenScrollbar = $(".hiddenScroll");
if(hiddenScrollbar.scrollTop() == 2*$( document ).height()){
$('.content-' + index).removeClass('main-content');
index = index%3 + 1;
$('.content-' + index).addClass('main-content');
hiddenScrollbar.scrollTop($( document ).height());
}else if($(".hiddenScroll").scrollTop() == 0){
$('.content-' + index).removeClass('main-content');
index = index == 1 ? 3 : index - 1;
$('.content-' + index).addClass('main-content');
hiddenScrollbar.scrollTop($( document ).height());
}
});
});
.main-content {
top: 0 !important;
z-index: 100 !important;
}
.pageContainer {
width: 100%;
height: 100%;
overflow-y: hidden;
background: white;
}
.content {
position: fixed;
top: 100%;
left: 0;
width: 100%;
height: 100%;
z-index: 0;
display: flex;
align-items: center;
text-align: center;
}
.content-1 {
background-image: url('https://preview.ibb.co/f88WDy/test_image_1.jpg');
background-size: cover;
}
.content-2 {
background-image: url('https://preview.ibb.co/fbVNLd/test_image_2.jpg');
background-size: cover;
}
.content-3 {
background-image: url('https://preview.ibb.co/i79Gfd/test_image_3.jpg');
background-size: cover;
}
.hiddenScroll {
width: 100%;
height: 100%;
overflow-y: scroll;
position: fixed;
display: block;
filter: opacity(0);
z-index: 101;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="pageContainer">
<div class="content content-1 main-content">
<div class="container">
<div class="row">
<div class="col-md-12">
<h1>Lorem Ipsum One</h1>
</div>
</div>
</div>
</div>
<div class="content content-2">
<div class="container">
<div class="row">
<div class="col-md-12">
<h1>Lorem Ipsum Two</h1>
</div>
</div>
</div>
</div>
<div class="content content-3">
<div class="container">
<div class="row">
<div class="col-md-12">
<h1>Lorem Ipsum Three</h1>
</div>
</div>
</div>
</div>
<div class="hiddenScroll">
<div style="height: 300vh;"></div>
</div>
</div>
https://stackoverflow.com/questions/50399858
复制相似问题