使页眉具有粘性并减小页面滚动的大小
Make the header sticky and reduce the size on page scroll
我有这样的代码,我希望header
在页面滚动时保持不变,同时减小标题大小。然而,我只处理了向下滚动时的粘性标题。我希望所有这些效果在滚动顶部时恢复。有什么解决方案吗?
这是我的代码:(也在jsFiddle上)
$(window).scroll(function() {
var scroll = $(window).scrollTop();
if (scroll >= 500) {
$(".clearHeader").addClass("darkHeader");
}
});
.clearHeader {
height: 200px;
background-color: rgba(107, 107, 107, 0.66);
position: fixed;
top: 200;
width: 100%;
}
.darkHeader {
height: 100px;
}
.wrapper {
height: 2000px;
}
<header class="clearHeader">
</header>
<div class="wrapper">
</div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
只需添加一个else
即可删除类:
if (scroll >= 500) {
$(".clearHeader").addClass("darkHeader");
} else { // <=== New
$(".clearHeader").removeClass("darkHeader"); // <=== bit
}
$(window).scroll(function() {
var scroll = $(window).scrollTop();
if (scroll >= 500) {
$(".clearHeader").addClass("darkHeader");
} else {
$(".clearHeader").removeClass("darkHeader");
}
});
.clearHeader {
height: 200px;
background-color: rgba(107, 107, 107, 0.66);
position: fixed;
top: 200;
width: 100%;
}
.darkHeader {
height: 100px;
}
.wrapper {
height: 2000px;
}
<header class="clearHeader">
</header>
<div class="wrapper">
</div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
但是由于scroll
事件在用户滚动时发生了多次,因此可以通过维护一个标志来减少我们在滚动上所做的工作量:
// Scoping function to avoid creating a global
(function() {
var haveDarkHeader = false;
$(window).scroll(function() {
var wantDarkHeader = $(window).scrollTop() >= 500;
if (wantDarkHeader != haveDarkHeader) {
haveDarkHeader = wantDarkHeader;
$(".clearHeader").toggleClass("darkHeader", haveDarkHeader);
}
});
})();
.clearHeader {
height: 200px;
background-color: rgba(107, 107, 107, 0.66);
position: fixed;
top: 200;
width: 100%;
}
.darkHeader {
height: 100px;
}
.wrapper {
height: 2000px;
}
<header class="clearHeader">
</header>
<div class="wrapper">
</div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
不过,它更多的是代码和重复状态(我们在JavaScript代码中以及元素有或没有类的事实中都有标志)。
使用toggleClass()
根据滚动位置添加或删除类:
$(window).scroll(function() {
var scroll = $(window).scrollTop();
$(".clearHeader").toggleClass("darkHeader", scroll >= 500);
});
如果scroll
大于或等于500,则将应用darkHeader类。否则,它将被删除。
$(window).scroll(function() {
var scroll = $(window).scrollTop();
$(".clearHeader").toggleClass("darkHeader", scroll >= 500);
});
.clearHeader {
height: 200px;
background-color: rgba(107, 107, 107, 0.66);
position: fixed;
top: 200;
width: 100%;
}
.darkHeader {
height: 100px;
}
.wrapper {
height: 2000px;
}
<header class="clearHeader">
</header>
<div class="wrapper">
</div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
添加这些并查看神奇的
$(window).scroll(function() {
var scroll = $(window).scrollTop();
if (scroll >= 500) {
$(".clearHeader").addClass("darkHeader");
}
else{
$(".clearHeader").removeClass("darkHeader");
}
});
.clearHeader{
height: 200px;
background-color: #333;
position: fixed;
top:200;
width: 100%;
}
.darkHeader {
height: 100px;
}
.wrapper {
height:2000px;
}
想了解更多信息,请查看我的小提琴:-http://jsfiddle.net/Jinukurian7/w9EgE/5/
相关文章:
- 在D3.js中,有没有任何方法可以将x和y方向上的滚动事件绑定到平移svg
- 有没有一种方法可以直接从cordova获得滚动位置
- 具有子菜单和平滑滚动的粘性导航
- 如何在已经有图标的滚动到顶部按钮中添加文本
- 我想滚动放大和缩小一个图像,但也有针在该图像上保持正确的位置.jQuery
- 有没有可能使网站水平和垂直滚动
- 如何使侧边栏固定时滚动像粘性
- 滚动事件运行缓慢-有没有更轻松的方法
- 如何在提交时防止粘性复选框重置?(一页上有多个表格)
- 使用粘性滚动菜单链接打开手风琴式菜单项
- 页面滚动在粘性页脚布局中保持滚动顶部位置
- Bootstrap-滚动时粘性/固定导航条
- 没有按钮的Javascript滚动器有问题
- 当滚动到最底部时,去掉粘性标题
- 有没有办法防止浏览器缓存滚动位置和缩放级别等值
- 当窗口向上滚动时,如何使用粘性侧边栏向上移动
- AngularJS + ag-grid:具有虚拟分页/无限滚动的粘性/记忆选择
- 滚动时有粘性的部分,但被下面的部分覆盖
- 如何制作一个有粘性的边栏'或者当你滚动到页脚时移动,这样它就不会被它覆盖
- Ajax无限滚动-有麻烦的帖子