javascript - 我可以重置 jQuery 粘性导航栏功能吗?

标签 javascript jquery html css

我是新来的,当我的粘性导航栏滚动到某个部分时,我用来更改 CSS 的 jQuery 脚本遇到了一个小问题。

首先,我使用了一个名为“.stickychange”的类,它是 jQuery 函数的触发器。在这一部分,我使用了背景图像(我个人拍摄的一张照片),并且我希望我的白色导航栏在超过该部分时变成透明的黑色。它就像一个魅力。但是在这个部分之后,我有一个白色的部分,我希望我的导航栏采用它的默认样式,但它没有。 如果我滚动回到顶部,它会采用默认设置,但如果我滚动经过 .stickychange,它会保留调整后的 CSS 样式。

您知道如何重置函数,或者至少在达到特定点时停止函数吗?

这是代码,如果你想在滚动时改变元素的样式,这是一个基本代码:

 var scroll_start = 0;
 var startchange = $(".stickychange");
 var offset = startchange.offset();

 if (startchange) {
     $(document).scroll(function () {
         scroll_start = $(this).scrollTop();
         if (scroll_start > offset.top) {
             $("#menu_top").css('background-color', 'rgba(0,0,0,0.5)');
             $("#menu_top").css('transition', 'all 0.2s ease-in');
             $("#menu_top a").addClass("stickyspecial");
            $("#menu_top h2").addClass("stickyname");
         } else {
             $('#menu_top').css('background-color', '#fff');
             $('#menu_top a').removeClass("stickyspecial");
             $('#menu_top h2').removeClass("stickyname");
         }
     });
 }

提前谢谢大家! :)

最佳答案

获取 divheight 并将其添加到您的 if

 var scroll_start = 0;
 var startchange = $(".stickychange");
 var offset = startchange.offset();

 // Get the height with padding and border
 // You could use .height() if you just want the height of the div.
 var endchange = startchange.outerHeight(); 

 if (startchange) {
     $(document).scroll(function () {
         scroll_start = $(this).scrollTop();
         if (scroll_start > offset.top && scroll_start < offset.top + endchange) { //<- Add it here  
             $("#menu_top").css('background-color', 'rgba(0,0,0,0.5)');
             $("#menu_top").css('transition', 'all 0.2s ease-in');
             $("#menu_top a").addClass("stickyspecial");
            $("#menu_top h2").addClass("stickyname");
         } else {
             $('#menu_top').css('background-color', '#fff');
             $('#menu_top a').removeClass("stickyspecial");
             $('#menu_top h2').removeClass("stickyname");
         }
     });
 }

如果您在 div 上使用 margin 并希望应用它,请使用 .outerHeight(true) .

关于javascript - 我可以重置 jQuery 粘性导航栏功能吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48164789/

相关文章:

javascript - 如何在 AngularJS 中测试 Service 与 IndexedDB 的配合

javascript - 这个reduce函数是使用spread还是rest?

javascript - 如何获取前一个元素的id?

javascript - 如何获取 "file input"所选文件的长度

javascript - 获取对特定属性具有相同值的对象列表

javascript - 从 TinyMCE 中删除 onSubmit 事件 Hook

javascript - 如何为表中的多个数据创建 AJAX POST 按钮?

jquery - Onload Jquery循环通过div :hovers?

html - 如何让 chrome 扩展全屏显示?

CSS - 对齐页面上的图像