Jquery 某些元素赢了';当我滚动过某个部分时,屏幕不会消失
我的代码有点问题 如您所见,我的示例有三个部分。更确切地说,Jquery 某些元素赢了';当我滚动过某个部分时,屏幕不会消失,jquery,html,css,sass,pug,Jquery,Html,Css,Sass,Pug,我的代码有点问题 如您所见,我的示例有三个部分。更确切地说,登录页,部分和关于。对于最后两个,我使用cssgrid将它们分为两个子部分 我正在尝试使用jquery实现滚动上的转换。类似地,当我滚动经过1/3的部分时,我的左元素开始从不透明度:0淡出。这应该分别发生在myabout部分的myright元素上,但在my code中,当我滚动到部分的1/3处时,这种情况就会发生 我尝试将我的right.hidden的类更改为right.hide,它完全停止褪色 贝娄:我已经附上了我的代码,这是我的代码
登录页
,部分
和关于
。对于最后两个,我使用cssgrid
将它们分为两个子部分
我正在尝试使用jquery
实现滚动上的转换。类似地,当我滚动经过1/3的部分时,我的左元素开始从不透明度:0
淡出。这应该分别发生在myabout
部分的myright
元素上,但在my code中,当我滚动到部分的1/3处时,这种情况就会发生
我尝试将我的right.hidden
的类更改为right.hide
,它完全停止褪色
贝娄:我已经附上了我的代码,这是我的代码笔的一个附件
玉石
无礼
Jquery
$(document).ready(function() {
var sectionLeftEl = $('.left'),
sectionRightEl = $('.right'),
sectionLeftElOffset = sectionLeftEl.offset().top / 3,
sectionRightElOffset = sectionRightEl.offset().top / 3,
documentEl = $(document);
documentEl.on('scroll', function() {
if (documentEl.scrollTop() > sectionLeftElOffset && sectionLeftEl.hasClass('hidden')) sectionLeftEl.removeClass('hidden');
if (documentEl.scrollTop() > sectionRightElOffset && sectionRightEl.hasClass('hidden') sectionRightEl.removeClass('hidden');
});
});
如果我理解正确,计算是错误的(额外的选择器问题@Temani Afif提到)
截面偏移(右或左)应为
截面地形偏移-2/3*截面高度
想象一下(或测试一下),当你开始滚动时,你可以看到部分的顶部。因此,每当您超过1/3中的.section
时,它就像说2/3*.section.height()
因此:
$(文档).ready(函数(){
var sectionLeftEl=$('.section.left'),
sectionRightEl=$('.about.right'),
sectionLeftElOffset=sectionLeftEl.offset().top-(2*sectionLeftEl.height()/3),
sectionRightElOffset=sectionRightEl.offset().top-(2*sectionRightEl.height()/3),
documentEl=$(文件);
documentEl.on('scroll',function(){
if(documentEl.scrollTop()>sectionLeftElOffset&§ionLeftEl.hasglass('hidden'))sectionLeftEl.removeClass('hidden');
if(documentEl.scrollTop()>sectionRightElOffset&§ionRightEl.hasClass('hidden'))sectionRightEl.removeClass('hidden');
});
});代码>
。登录页{
高度:100vh;
宽度:100vw;
背景:灰色;
}
.科{
高度:100vh;
宽度:100vw;
显示:网格;
网格模板列:重复(2,1fr);
网格模板区域:“左-右”“左-右”;
}
.左{
网格区域:左侧;
背景:橙色;
过渡时间:2000ms;
}
.section.left.hidden{
不透明度:0;
}
.部门.对{
网格区域:右;
背景:浅蓝色;
}
.关于{
高度:100vh;
宽度:100vw;
显示:网格;
网格模板列:重复(2,1fr);
网格模板区域:“左-右”“左-右”;
}
.大约.左边{
网格区域:左侧;
背景:浅绿色;
}
.大约.对{
网格区域:右;
背景:橙色;
过渡时间:2000ms;
}
.关于.对.隐藏{
不透明度:0;
}
为什么要隐藏?这个班叫Hidden仔细阅读我的帖子。。我试着改变它,因为我认为它会在我滚动1/3后消失。我读了这篇文章,但仍然不明白为什么要改变一个不存在的类?你期待什么?您必须使用隐藏类删除或添加现有的classI Think,这在创建此转换的两个div之间很常见。我希望我的右元素在我滚动about div的1/3后淡出,而不是在我滚动到section的1/3后淡出。这就是为什么我尝试使用不同的类。你的问题是偏移量计算,你有两个右部分,你得到的第一个偏移量与第一个左部分相同
.landing-page
height: 100vh
width: 100vw
background: gray
.section
height: 100vh
width: 100vw
display: grid
grid-template-columns: repeat(2, 1fr)
grid-template-areas: 'left right' 'left right'
.left
grid-area: left
background: orangered
transition: 2000ms
.left.hidden
opacity: 0
.right
grid-area: right
background: lightblue
.about
height: 100vh
width: 100vw
display: grid
grid-template-columns: repeat(2, 1fr)
grid-template-areas: 'left right' 'left right'
.left
grid-area: left
background: lightgreen
.right
grid-area: right
background: orangered
transition: 2000ms
.right.hidden
opacity: 0
$(document).ready(function() {
var sectionLeftEl = $('.left'),
sectionRightEl = $('.right'),
sectionLeftElOffset = sectionLeftEl.offset().top / 3,
sectionRightElOffset = sectionRightEl.offset().top / 3,
documentEl = $(document);
documentEl.on('scroll', function() {
if (documentEl.scrollTop() > sectionLeftElOffset && sectionLeftEl.hasClass('hidden')) sectionLeftEl.removeClass('hidden');
if (documentEl.scrollTop() > sectionRightElOffset && sectionRightEl.hasClass('hidden') sectionRightEl.removeClass('hidden');
});
});