向下滚动时隐藏,向上滚动时部分显示,在顶部时完全显示
JQuery - Hide on Scroll Down, Partially Show on Scroll Up, Fully Show when at Top
链接到JSFiddle示例代码;https://jsfiddle.net/m9r510xq/5/
我正在尝试使一个头具有以下行为;
- 当用户向下滚动页面时,头部得到一个CSS类(.state-up),将其拉起并完全隐藏。
- 每当用户在页面上向上滚动时,头部得到一个CSS类(.state-partial),使其回落一点,部分显示一点头部(顶部的一些隐藏而底部的一些可见)。
- 当用户返回到页面的顶部时,头部得到一个CSS类(.state-down),它将头部返回到正常状态,并完全显示。
这是我到目前为止的代码;
$(window).scroll(function (event) {
var st = $(this).scrollTop();
var lastScrollTop = 0;
if (st > 0) {
if (st > lastScrollTop) {
// downscroll code
$('.a').removeClass('state-down');
$('.a').removeClass('state-partially');
$('.a').addClass('state-up')
} else {
// uproll code
$('.a').removeClass('state-down');
$('.a').removeClass('state-up');
$('.a').addClass('state-partially')
}
} else {
$('.a').removeClass('state-up');
$('.a').removeClass('state-partially');
$('.a').addClass('state-down')
}
});
这里的逻辑是,它检查页面是否已经滚动到页面顶部。如果有,它就会检查用户滚动的方向。
- 如果它们向下滚动,它会删除任何与向上滚动和位于顶部相关的样式,并且只应用与向下滚动相关的样式。
- 如果它们向上滚动,它会删除任何与向下滚动和位于顶部相关的样式,并且只应用与向上滚动相关的样式。
但是,当页面返回到顶部时,它会删除任何与滚动方向相关的样式,并仅应用与顶部相关的样式。
我没有预先在HTML中应用标题的样式,我只通过这个脚本应用和更改样式。
我最初使用这个例子:https://jsfiddle.net/mariusc23/s6mLJ/31/但是,我没有这样做,因为我想确保我想要应用的逻辑在最小状态下是可能的。
每次滚动窗口时,您的lastScrollTop
变量被设置为零。你需要把这个变量放在滚动事件之外。
然后,在滚动函数结束时,将lastScrollTop
设置为当前调用的st
的值。这样,lastScrollTop
将在下次调用滚动事件时可用。
下面是一个工作示例:
var lastScrollTop = 0;
$(window).scroll(function (event) {
var st = $(this).scrollTop();
if (st > 0) {
if (st > lastScrollTop) {
// downscroll code
$('.a').removeClass('state-down');
$('.a').removeClass('state-partially');
$('.a').addClass('state-up')
} else {
// uproll code
$('.a').removeClass('state-down');
$('.a').removeClass('state-up');
$('.a').addClass('state-partially')
}
} else {
$('.a').removeClass('state-up');
$('.a').removeClass('state-partially');
$('.a').addClass('state-down')
}
lastScrollTop = st;
});
body {
height: 2000px;
}
.a {
height: 300px;
width: 300px;
display: block;
background-color: green;
position: fixed;
}
.state-down {
top: 0px;
}
.state-partially {
top: -150px;
}
.state-up {
top: -300px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<div>
<div class="a">A</div>
</div>
和jsFiddle版本:https://jsfiddle.net/m9r510xq/6/
相关文章:
- 在顶部显示滚动条&DIV
- 如何“;“修复”;显示滚动条时的容器元素高度
- 搜索输入问题显示滚动
- jquery对话框在IE中没有显示滚动条
- jQuery高亮显示滚动导航链接不起作用
- 在鼠标悬停时显示滚动条 [javascript]
- 使用滚动顶部显示滚动的像素
- 捕获显示滚动条事件
- jQuery:如何在不显示滚动条的情况下滚动正文
- 可以滚动内容,但不显示滚动条
- 显示滚动文本消息
- jQuery-jScrollPane没有't显示滚动条
- 只在iPad上显示滚动错误
- iSrcoll4-默认显示滚动条
- amCharts显示滚动气球中的值变化
- JS-jQuery-Tw引导-阻止用户滚动正文,但显示滚动条
- Dojo移动显示滚动条
- isscroll不显示滚动条,但允许我拖动内容
- 一个简单的显示滚动球的程序
- 显示滚动消息-不工作