我确信我以前见过这种技术,但我似乎无法弄清楚它叫什么,或者在网上找到一个像样的例子来学习。似乎是一个基本问题:
我想制作一个单页网站,其中网站的徽标在页面加载时显示较大,然后随着用户向下滚动而变小,直到图像达到一定大小,然后将其固定在页面顶部,与该站点的菜单就在其下方,也固定在页面顶部。
我已经尝试了几种方法来完成这项工作。我目前设置它的方式,它下面的内容在标题下方滚动太“快速”并隐藏在下面。
标记
</div>
<nav id="nav">
<ul>
<li><a href="#section_1">Section 1</a>
</li>
<li><a href="#section_2">section_2</a>
</li>
<li><a href="#section_3">section_3</a>
</li>
<li><a href="#section_3">section_3</a>
</li>
</ul>
</nav>
</header>
<div id="main">
<div class="content_section" id="section_1">Section 1!</div>
<div class="content_section" id="section_2">Section 2</div>
<div class="content_section" id="section_3">Section 2</div>
<div class="content_section" id="section_3">Section 3</div>
</div>
CSS
#header {
width:100%;
text-align: center;
position:fixed;
}
#header img {
height:100%;
}
#logo_container {
height:200px;
/*temporary -- this is usally supplied by height of the image inside it */
}
nav {
background-color: #E9E9E9;
display: inline-block;
margin: 30px 0;
text-align: center;
width: 100%;
}
nav ul, nav li {
margin: 0;
list-style:none;
list-style-image: none;
}
#main {
display:inline-block;
padding-top:800px;
}
.content_section {
display:block;
border-top:5px black solid;
height:200px;
margin-bottom:20px;
}
和 Javascript:
$(function () {
function resizeTopLogo() {
var winScrollTop = $(window).scrollTop() + 0,
zeroSizeHeight = $(document).height() - $(window).height(),
newSize = Baseheight * (1 - (winScrollTop / zeroSizeHeight) * (2 / 3));
Node.css({
height: newSize
});
$("#main").css({
paddingTop: $("#header").height()
})
}
var
Node = $('#logo_container'),
Baseheight = Node.height();
$(window).scroll(function () {
resizeTopLogo();
});
});
所以,我的问题是如何使底部内容滚动与减小大小的标题,直到标题达到它应该保留的高度,然后独立于标题滚动。(当然,当用户向上滚动到页面顶部时,它必须返回到其原始状态,但这可能完全是另一回事)。
为了清楚起见,我只是在询问将 div 固定到页面顶部的问题。我能做到。我想减小图像的大小,同时固定到页面顶部,同时在其下方很好地滚动内容。
我也尝试将内容放在标题下方,在同一个固定 div 中,但内容不会滚动。我尝试使用虚拟容器使其滚动,但是内容的底部不会始终如一地显示出来,而且看起来不必要的hacky。