【问题标题】:Change img src when navbar-shrink is active当 navbar-shrink 处于活动状态时更改 img src
【发布时间】:2015-11-06 22:39:42
【问题描述】:

我正在使用引导模板,其中导航栏在向下滚动时会缩小。我已将导航栏设为透明,直到它滚动为止,并且只需更改即可变为白色:

.navbar-default {
  background-color: transparent;
}
.navbar-default.navbar-shrink {
  background-color: #fff;
}

现在,由于背景图像,我的徽标大部分是白色的,但我希望在导航栏收缩生效时将其更改为黑色版本。

当“navbar-shrink”类使用 if 语句激活时,我尝试通过更改图像 src attr 来实现它,但它一定有问题。

我尝试了不同的方法并想出了这个:

$(document).ready(function() {
if($('nav').hasClass('navbar-shrink')) ({
    $('.pull-left img').attr('src', 'img/dolphin-nav2.svg');
  });
});

或者这个

$(document).ready(function() {
if($('nav').attr('class', 'navbar-shrink')) ({
    $('.pull-left img').attr('src', 'img/dolphin-nav2.svg');
  });
});

但两者都不起作用

【问题讨论】:

  • 我会为此使用 Css 媒体查询
  • 怎么样?这与调整大小无关......缩小基本上是向下滚动时高度变化 10px 左右
  • 我的错,我误会了。我以为你在说你缩小窗口并且导航栏崩溃时,忽略

标签: jquery twitter-bootstrap if-statement navbar


【解决方案1】:

只需将这两个图像添加到您的源代码中,然后根据 navbar-shrink 类显示/隐藏相应的图像。

<div class="nav">
  <img class="white-image" ... />
  <img class="dark-image" ... />
</div>


.nav .white-image { display:none; }
.nav .dark-image  { display:block; }
.nav.navbar-shrink .white-image { display: block; }
.nav.navbar-shrink .dark-image  { display: none; }

否则,你需要将你的src更改逻辑添加到滚动事件中,否则页面加载时只会调用一次。

$(document).ready(function() {
    $(window).on('scroll', function() {
      if($('nav').attr('class', 'navbar-shrink')) {
        $('.pull-left img').attr('src', 'img/dolphin-nav2.svg');
      } else {
        ...
      }
    });
});

请注意,您的 if 语句括号 { } 周围有错误的括号

【讨论】:

  • 根本没想过显示...比 js 容易得多。非常感谢!
猜你喜欢
  • 2019-04-13
  • 2018-09-15
  • 2020-12-17
  • 2019-11-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-03
  • 2018-06-28
相关资源
最近更新 更多