jQuery 动画 - 多元素
jQuery Animation - Multiple Elements
我一直在尝试在我曾经实现过的网页上实现一个效果,但我想将它应用到多个页面部分。但是我在定位和获取所需动画时遇到问题
我正在使用 jQuery 和 slideUp 方法。我有以下代码;
(function() {
var pageEl = $('div.first-layer');
$(document).on('scroll', function() {
pageEl.slideUp(1300, function() { $(document).off('scroll').remove(); });
});
})();
这达到了预期的效果;
如您所见,我已经成功地使用上述代码实现了一次此动画,但我希望能够将此效果应用到具有 3 个不同元素的滚动上。
我的想法是附加一个 id/class 并且每个 class 都有一个不同的滚动事件附加到它,当它到达每个 class/id 所需的滚动点时隐藏另一个2 个元素。
如果有人能指出正确的方向或提供一些建议,我们将不胜感激。现在已经坚持了一段时间。如果您想了解更多信息,请直接询问。
谢谢。
编辑:我创建了一个 JSFiddle,供您查看我想要实现的目标;
https://jsfiddle.net/tdatkxrf/4/
好的,所以,根据您希望它如何触发事件,您可能需要更多地使用它,现在它非常敏感,但在这里:
编辑: 在 Plunkr 上,我通过添加一个计算滚动次数的新变量修改了灵敏度。我将保持原样,这样您就可以看到这两个实现(带变量的 plunker,没有变量的答案)。
plunkr:https://plnkr.co/edit/02mko4f5ZSqSDLtlvDwR?p=preview
html:
<!DOCTYPE html>
<html>
<head>
<script src="https://code.jquery.com/jquery-1.10.2.js"></script>
<link rel="stylesheet" href="style.css" />
<script src="script.js"></script>
</head>
<body>
<h1 style="text-align: center; font-family: helvetica;">jQuery slideUp</h1>
<div class="container" style="display: flex; align-items: center; flex-direction: column; position: relative; background: grey;">
<div id="section-one" style="height: 300px; width: 300px; background: #cc6699;">
<h1 style="text-align: center; font-family: helvetica;">Section One</h1>
</div>
<div id="section-two" style="display:none; height: 300px; width: 300px; background: #cc9966;">
<h1 style="text-align: center; font-family: helvetica;">Section Two</h1>
</div>
<div id="section-three" style="display: none; height: 300px; width: 300px; background: #6699cc;">
<h1 style="text-align: center; font-family: helvetica;">Section Three</h1>
</div>
</div>
</body>
</html>
jQuery:
// Code goes here
$(document).ready(function() {
var e1 = $('#section-one');
var e2 = $('#section-two');
var e3 = $('#section-three');
var sections = [e1, e2, e3];
$('.container').bind('mousewheel', function(e){scrollCheck(e);});
var scrollCheck = function(e){
if(e.originalEvent.wheelDelta /120 > 0) {
for(i= 0; i<sections.length;i++){
j=i-1;
if(sections[i].attr('display') != "none" && i > 0){
sections[i].slideUp(1300);
sections[i].attr('display', "none");
sections[j].slideDown(1300);
sections[j].attr('display', "");
return;
}
}
}
else{
for(i= 0; i<sections.length;i++){
j=i+1;
if(sections[i].attr('display') != "none" && i+1 < sections.length){
sections[i].slideUp(1300);
sections[i].attr('display', "none");
sections[j].slideDown(1300);
sections[j].attr('display', "");
return;
}
}
}
}
});
还有一些包可以检测鼠标滚轮事件,您可能想看看其中的一个。
我一直在尝试在我曾经实现过的网页上实现一个效果,但我想将它应用到多个页面部分。但是我在定位和获取所需动画时遇到问题
我正在使用 jQuery 和 slideUp 方法。我有以下代码;
(function() {
var pageEl = $('div.first-layer');
$(document).on('scroll', function() {
pageEl.slideUp(1300, function() { $(document).off('scroll').remove(); });
});
})();
这达到了预期的效果;
如您所见,我已经成功地使用上述代码实现了一次此动画,但我希望能够将此效果应用到具有 3 个不同元素的滚动上。
我的想法是附加一个 id/class 并且每个 class 都有一个不同的滚动事件附加到它,当它到达每个 class/id 所需的滚动点时隐藏另一个2 个元素。
如果有人能指出正确的方向或提供一些建议,我们将不胜感激。现在已经坚持了一段时间。如果您想了解更多信息,请直接询问。
谢谢。
编辑:我创建了一个 JSFiddle,供您查看我想要实现的目标; https://jsfiddle.net/tdatkxrf/4/
好的,所以,根据您希望它如何触发事件,您可能需要更多地使用它,现在它非常敏感,但在这里:
编辑: 在 Plunkr 上,我通过添加一个计算滚动次数的新变量修改了灵敏度。我将保持原样,这样您就可以看到这两个实现(带变量的 plunker,没有变量的答案)。 plunkr:https://plnkr.co/edit/02mko4f5ZSqSDLtlvDwR?p=preview
html:
<!DOCTYPE html>
<html>
<head>
<script src="https://code.jquery.com/jquery-1.10.2.js"></script>
<link rel="stylesheet" href="style.css" />
<script src="script.js"></script>
</head>
<body>
<h1 style="text-align: center; font-family: helvetica;">jQuery slideUp</h1>
<div class="container" style="display: flex; align-items: center; flex-direction: column; position: relative; background: grey;">
<div id="section-one" style="height: 300px; width: 300px; background: #cc6699;">
<h1 style="text-align: center; font-family: helvetica;">Section One</h1>
</div>
<div id="section-two" style="display:none; height: 300px; width: 300px; background: #cc9966;">
<h1 style="text-align: center; font-family: helvetica;">Section Two</h1>
</div>
<div id="section-three" style="display: none; height: 300px; width: 300px; background: #6699cc;">
<h1 style="text-align: center; font-family: helvetica;">Section Three</h1>
</div>
</div>
</body>
</html>
jQuery:
// Code goes here
$(document).ready(function() {
var e1 = $('#section-one');
var e2 = $('#section-two');
var e3 = $('#section-three');
var sections = [e1, e2, e3];
$('.container').bind('mousewheel', function(e){scrollCheck(e);});
var scrollCheck = function(e){
if(e.originalEvent.wheelDelta /120 > 0) {
for(i= 0; i<sections.length;i++){
j=i-1;
if(sections[i].attr('display') != "none" && i > 0){
sections[i].slideUp(1300);
sections[i].attr('display', "none");
sections[j].slideDown(1300);
sections[j].attr('display', "");
return;
}
}
}
else{
for(i= 0; i<sections.length;i++){
j=i+1;
if(sections[i].attr('display') != "none" && i+1 < sections.length){
sections[i].slideUp(1300);
sections[i].attr('display', "none");
sections[j].slideDown(1300);
sections[j].attr('display', "");
return;
}
}
}
}
});
还有一些包可以检测鼠标滚轮事件,您可能想看看其中的一个。