【问题标题】:Sticky nav active state working on click instead of on scroll粘性导航活动状态在单击而不是滚动时起作用
【发布时间】:2019-06-10 10:23:50
【问题描述】:

我在页面顶部有一个导航栏,我试图在滚动时让它下方出现一个框阴影。

我尝试过使用 .active 和 :active ,但没​​有成功。我可以强制阴影出现在 chrome devtools 中,但不能让它在滚动时正常工作。

.sidenav-breadcrumbs {
    height: 45px; 
    font-size: 16px; 
    font-weight: bold; 
    background: red;
}
.nav-fixed-top {
    position: fixed;
    top: 100px;
    right: 0;
    left: 0;
    z-index: 1020;
}
.shadow:active {
    box-shadow: 0 0 10px rgba(0,0,0,0.4)!important;
}

阴影应该出现在滚动条下方,但似乎只在单击条时出现。 如果你能提供帮助,谢谢。

【问题讨论】:

  • 请张贴html代码。
  • :active 是我们可以用于<a><button> 标签的状态,而不是导航栏!滚动时,尝试使用 Javascript 向导航栏添加一个附加类,并在该附加类中声明 box-shadow 属性。很简单!
  • 谢谢@Shuvo,你为我指明了正确的方向。我使用了这段代码并且一切正常: $(window).scroll(function() { var scroll = $(window).scrollTop(); if (scroll > 0) { $(".sidenav-breadcrumbs").addClass ("active"); } else { $(".sidenav-breadcrumbs").removeClass("active"); } });
  • 乐于帮助@ryannewell

标签: css scroll nav sticky box-shadow


【解决方案1】:

Active selector 适用于被点击的元素,这就是为什么点击栏时会出现阴影的原因。没有滚动选择器,因此您应该在滚动时使用 JavaScript 添加 shadow 类。

document.addEventListener("scroll", function(){
    addShadowClassToBar();
});

并且由于您可能希望在滚动完成后移除阴影,您还应该移除该类。 Here 是上一个处理滚动停止检测的问题。

【讨论】:

    猜你喜欢
    • 2016-09-26
    • 2014-08-22
    • 2015-11-17
    • 2017-03-14
    • 2016-08-04
    • 2019-03-08
    • 1970-01-01
    • 2019-10-10
    • 1970-01-01
    相关资源
    最近更新 更多