【发布时间】:2018-10-12 06:29:05
【问题描述】:
我的代码有点问题。
如您所见,我的示例包含三个部分。更确切地说是landing-page、section 和about。对于最后两个,我使用CSS grid 将它们分成两个小节。
我正在尝试使用jquery 在滚动上实现transition。就像,当我滚动超过 section 的 1/3 时,我的 left 元素开始从 opacity:0 消失。这应该分别发生在我的about 部分中的我的right 元素上,但是对于我的代码,一旦我滚动超过section 的1/3,就会发生这种情况。
我尝试将right.hidden 的类更改为right.hide,它完全停止了褪色。
下面我附上了我的代码,这是一个 link 到我的 CodePen
翡翠
.landing-page
.section
.left.hidden
.right
.about
.left
.right.hidden
萨斯
.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
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');
});
});
【问题讨论】:
-
为什么要隐藏?该类被称为隐藏
-
仔细阅读我的帖子。我尝试更改它,因为我认为滚动 1/3 左右后它会消失
-
我读了这篇文章,仍然不明白为什么要改成不存在的课程?你期待什么?您必须删除或添加现有类
-
我认为使用隐藏的类,这在两个 div 之间很常见,创建了这个过渡。我希望我的右元素在我滚动 1/3 的 about div 后消失,而不是在我滚动 1/3 到部分后。这就是为什么我尝试使用不同的类。
-
你的问题是偏移量计算,你有两个右边部分,你得到第一个与左边第一个相同的偏移量