【发布时间】:2015-10-20 05:00:33
【问题描述】:
我想在滚动条上添加一个类.custom-menu-bg 到粘性菜单.custom-menu,同时在主体上添加overflow: hidden。这是我的代码:
<script type="text/javascript" src="css/jquery-1.7.2.min.js"></script>
<script type="text/javascript">
var _rys = jQuery.noConflict();
_rys("document").ready(function() {
_rys(window).scroll(function() {
if (_rys(this).scrollTop() > 1) {
_rys('.custom-menu').addClass("custom-menu-bg");
} else {
_rys('.custom-menu').removeClass("custom-menu-bg");
}
});
});
</script>
但此代码不适用于 body 标签上的 overflow: hidden
所以我尝试了:
$('html').on('DOMMouseScroll', function(e) {
var delta = e.originalEvent.detail;
if (delta < 0) {
if ($('body').hasClass('section-element-1'))
$('.custom-menu').addClass("custom-menu-bg");
} else if (delta > 0) {
$('.custom-menu').removeClass("custom-menu-bg");
}
});
但此代码仅适用于 Mozilla,甚至不是解决方案,它只是临时修复或解决方法。
我想要的是当我向下滚动$('.custom-menu').addClass("custom-menu-bg"); 时,即custom-menu-bg 类被添加到custom-menu。
当我向上滚动到顶部 $('.custom-menu').removeClass("custom-menu-bg"); 即 custom-menu-bg 类从 custom-menu 中删除。
body,document,window 等的顶部总是0。
在我的div 和custom-menu 的顶部也有top: 0 总是。
我正在寻找适用于所有浏览器的永久解决方案。
【问题讨论】:
-
当你的
body { overflow: hidden; }时你怎么能滚动??考虑创建一个Minimal, Complete, and Verifiable example,它将帮助您和其他 SOuser 为您提供更好的解决方案。 -
@vivekkupadhyay 推荐stackoverflow.com/questions/19466750/…
-
@Vitorinofernandes 我重视你的建议,但链接对我没有用,因为我有条件
body {overflow:hidden}。 -
能否请您创建一个小提琴或 sn-p,以便我/其他 SO 用户可以理解您发出的问题,仅查看 js 很难分辨
标签: javascript jquery html css scroll