javascript - 根据用户在页面上的位置更改 jQuery

标签 javascript jquery html css

我正在尝试在用户向下滚动后背景出现的地方进行导航。然而,当用户在页面中间并刷新时,背景消失,他们需要再次滚动才能重新出现。我正在尝试做到这一点,以便无论何时用户滚动过标题,导航背景颜色都将在那里。

如有任何帮助,我们将不胜感激!

代码:

J查询:

    $(document).ready(function(){
  var targetOffset = $('header').offset().top + $('header').height();

  var $w = $(window).scroll(function(){
      if ( $w.scrollTop() > targetOffset ) {
          $("#nav").css('background-color', 'rgba(35,46,63,1)');
      } else {
        $('#nav').css('background-color', 'rgba(35,46,63,0)');
      }
  });
});

CSS:

nav {
    background-color: rgba(35,46,63,0);
    transition: background-color 200ms linear;
    position: fixed;
    left: 0;
    right: 0;
    padding: 25px;
    z-index: 1;
    box-shadow: 0px 0px 0px rgba(0,0,0,0);
}

nav > .wrapper {
    overflow: hidden;
}

nav > .wrapper > li.nav-logo {
    list-style: none;
    font-weight: 600;
    padding: 0px;
    border-top: 1px solid rgba(0,0,0,0);
}

nav > .wrapper > li.nav-logo > a {
    color: #DDDDDD;
    text-decoration: none;
}

nav > .wrapper > li.nav-logo > a > img.left {
    width: 5%;
    display: inline-block;
    float: left;
}

nav > .wrapper > ul.right {
    list-style: none;
    float: right;
}

nav > .wrapper > ul > li {
    display: inline-block;
    list-style: none;
    font-weight: 400;
    font-size: 0.9em;
    padding: 15px;
    border-bottom: 1px solid rgba(0,0,0,0);
    border-radius: 6px;
    vertical-align: middle;
    transition: all 0.3s ease;
}

nav > .wrapper > ul > li > a {
    color: #FFFFFF;
    text-decoration: none;
    transition: all .3s ease;
}

nav > .wrapper > ul > li > a:hover {
    color: white;
    text-decoration: none;
}

HTML:

<nav id="nav">
    <div class="wrapper">
        <li class="nav-logo"><a href="#"><img class="left" src="assets/images/ugn-logos/single-ugn-logo.png" alt="ugn-logo"></a></li>
        <span class="nav-btn"><i class="icon-menu"></i></span>
        <ul class="right">
            <li><a href="index.html">Home</a></li>
            <li><a href="shared-hosting.html">Shared Hosting</a></li>
            <li><a href="vps.html">VPS</a></li>
            <li><a href="minecraft.html">Minecraft</a></li>
            <li><a href="#">Contact</a></li>
        </ul>
    </div>
</nav>

最佳答案

这是因为 $(window).scroll() 只会在滚动发生后激活。 $(document).ready() 需要执行相同的脚本。因此,您可以创建一个函数并在调整窗口大小和准备好文档时调用它。

$(document).ready(function(){
  function changeBG() {
    var targetOffset = $('header').offset().top + $('header').height();

    if ( $w.scrollTop() > targetOffset ) {
      $("#nav").css('background-color', 'rgba(35,46,63,1)');
    } else {
      $('#nav').css('background-color', 'rgba(35,46,63,0)');
    }
  }

  changeBG();

  $(window).scroll(changeBG);

});

关于javascript - 根据用户在页面上的位置更改 jQuery,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44377296/

相关文章:

javascript - 返回按钮,返回已填写的表格

javascript - 模块没有在 Electron 的渲染过程中导入

javascript - 单击某个元素后调用 jQuery 函数

javascript - 如何在extjs6中发送Ajax到远程服务器?

javascript - 表格不同单元格上的工具提示

javascript - TinyMCE IndexSizeError 在 IE9,IE10

html - 如何为html <p>设置行间距

javascript - 如何将 css 样式嵌入到打印预览中

javascript - 如何找到 td 类并检查它是否包含类然后我需要显示弹出窗口?

html - 导航菜单不在包装 div 的中心,边距 : 0 auto; does not work