我有两个article
标记定位为绝对,我想使用渐变效果在它们之间转换。
我使用opacity
和z-index
来实现这一点。
我遇到的问题是,当活动文章后面的文章内容高于前面的文章时,当页面滚动时,它变得可见,避免这种情况的唯一方法是使用display: none
或overflow: hidden
,但这使得页面不可褪色或不可滚动。
我得到了这个
// When clicking on a next button change the active class
document.querySelector('#next').addEventListener('click', function() {
document.querySelector('.active').classList.remove('active')
document.querySelector('#about').classList.add('active')
})
html, body, main {
height: 100%;
}
main {
position: relative;
height: 100%;
width: 100%;
overflow: auto;
}
body {
background: pink;
padding: 0;
margin: 0;
}
.content {
display: table-cell;
vertical-align: middle
}
.container {
max-width: 500px;
margin: 0 auto;
position: relative;
overflow: hidden;
}
article {
display: table;
width: 100%;
height: 100%;
background: no-repeat fixed bottom / cover;
position: absolute;
top: 0;
left: 0;
opacity: 0;
z-index: -1;
transition: opacity 0.3s ease;
background-color: #fff;
}
article.active {
opacity: 1;
z-index: 1;
}
<html lang="en">
<body>
<main>
<article id='intro' class='active'>
<div class='content'>
<div class='container'>
This is the front page
<button id='next'>Next</button>
<br><br><br><br><br><br><br><br><br><br>
</div>
</div>
</article>
<article id='about'>
<div class='content'>
<div class='container'>
This is the page behind the front that I cannot hide cause its content makes it higher
<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br> <br><br><br><br><br><br>
</div>
</div>
</article>
</main>
</body>
</html>
你可以看到身体background-color: pink
滚动时造成的高度的文章
2条答案
按热度按时间ngynwnxp1#
我建议合并换两个班。例如,'active' class设置
article
的高度,而visible
class使article
可见:或者您可以将所有
.article
设置为最高的height
。就像这样:nsc4cvqm2#
看起来可以使用
100vh
来解决高度问题基于我的评论:这就是我所说的“简化”: