如何根据滚动 JS/jQuery 上的几个部分来更改粘性元素?
How to change sticky element depending on scrolling through several section on JS/jQuery?
我需要在滚动经过几个文本部分时更改置顶图像(通过更改 class 或更改 URL attr)。
他们主页上的 Asana 有一个确切的例子
check the gif animation here
在文本第 1 部分 - 图片 1 前面,
当我们在文本部分 2 附近滚动时 - 图像更改为第二部分,依此类推。
当滚动回到顶部时,同样的逻辑,每个图像出现在它的文本部分的前面。
如果只有 1 个断点,我使用了这样的代码:
$(window).scroll(function () {
if ($(window).scrollTop() >= offset) {
$(".image").addClass("active");
} else {
$(".image").removeClass("active");
}
});
但是由于可能有更多的部分,我需要另一个解决方案。
有什么想法吗?提前致谢。
我认为这就是您正在寻找的模式:
$(window).scroll(function () {
image1();
image2();
image3();
});
function image1() {
var min = 0;
var max = 400;
if(window.scrollY >= min && window.scrollY < max) {
$("img").attr("src","https://cdn.picpng.com/head/head-the-dummy-avatar-man-tie-72756.png");
}
}
function image2() {
var min = 400;
var max = 800;
if(window.scrollY >= min && window.scrollY < max) {
$("img").attr("src","https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcRlfO4xTPtZVZfQCZqpaoOV4_c3G-OMUJ00IU0fy8wnDOZzud3N2xYnMrzJbXLCs7vlmWM&usqp=CAU");
}
}
function image3() {
var min = 800;
var max = 10000;
if(window.scrollY >= min && window.scrollY < max) {
$("img").attr("src","https://www.unite2canada.com/images/dummy-user.png");
}
}
你可以看到这段代码在工作吧here
也许对某些人会有帮助,所以我将 post 我的解决方案。
多亏了 Alex,我改变了逻辑:我只留下一张图片,在滚动时,我改变了 src 属性。
$(window).scroll(function () {
let index, txtPosition, imgPosition;
$('.text-item').each(function () {
index = $(this).index();
txtPosition = $(this).offset().top;
imgPosition = $('.image-item').offset().top + 50;
if (txtPosition < imgPosition) {
$('.image-item img').attr('src', $(this).attr('data-image'));
}
});
});
我需要在滚动经过几个文本部分时更改置顶图像(通过更改 class 或更改 URL attr)。 他们主页上的 Asana 有一个确切的例子
check the gif animation here
在文本第 1 部分 - 图片 1 前面, 当我们在文本部分 2 附近滚动时 - 图像更改为第二部分,依此类推。 当滚动回到顶部时,同样的逻辑,每个图像出现在它的文本部分的前面。
如果只有 1 个断点,我使用了这样的代码:
$(window).scroll(function () {
if ($(window).scrollTop() >= offset) {
$(".image").addClass("active");
} else {
$(".image").removeClass("active");
}
});
但是由于可能有更多的部分,我需要另一个解决方案。
有什么想法吗?提前致谢。
我认为这就是您正在寻找的模式:
$(window).scroll(function () {
image1();
image2();
image3();
});
function image1() {
var min = 0;
var max = 400;
if(window.scrollY >= min && window.scrollY < max) {
$("img").attr("src","https://cdn.picpng.com/head/head-the-dummy-avatar-man-tie-72756.png");
}
}
function image2() {
var min = 400;
var max = 800;
if(window.scrollY >= min && window.scrollY < max) {
$("img").attr("src","https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcRlfO4xTPtZVZfQCZqpaoOV4_c3G-OMUJ00IU0fy8wnDOZzud3N2xYnMrzJbXLCs7vlmWM&usqp=CAU");
}
}
function image3() {
var min = 800;
var max = 10000;
if(window.scrollY >= min && window.scrollY < max) {
$("img").attr("src","https://www.unite2canada.com/images/dummy-user.png");
}
}
你可以看到这段代码在工作吧here
也许对某些人会有帮助,所以我将 post 我的解决方案。 多亏了 Alex,我改变了逻辑:我只留下一张图片,在滚动时,我改变了 src 属性。
$(window).scroll(function () {
let index, txtPosition, imgPosition;
$('.text-item').each(function () {
index = $(this).index();
txtPosition = $(this).offset().top;
imgPosition = $('.image-item').offset().top + 50;
if (txtPosition < imgPosition) {
$('.image-item img').attr('src', $(this).attr('data-image'));
}
});
});