【问题标题】:JS Script take time to change background colorJS 脚本需要时间来改变背景颜色
【发布时间】:2015-09-22 14:28:18
【问题描述】:

我在 bootsrap 上有一个导航栏,我想在滚动通过品牌名称时更改颜色。它可以工作,但不是立即生效,有时当我很快到达顶部时,背景颜色不会改变。或者为了响应它是一样的,如果我把窗户变小它需要时间。

我的 HTML:

<nav class="transparent navbar navbar-default navbar-fixed-top">
    <div class="container-fluid">
    <!-- Brand and toggle get grouped for better mobile display -->
        <div class="navbar-header">
            <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#collapse-menu" aria-expanded="false">
                <span class="sr-only">Toggle navigation</span>
                <span class="icon-bar"></span>
                <span class="icon-bar"></span>
                <span class="icon-bar"></span>
            </button>
            <a class="navbar-brand page-scroll" href="#page-top">
                <img src="img/logo_menu.jpg" class="img-responsive" alt="">
            </a>
        </div>

        <!-- Collect the nav links, forms, and other content for toggling -->
        <div class="collapse navbar-collapse" id="collapse-menu">      
            <ul class="nav navbar-nav navbar-right">
                <li><a href="#services">Services</a></li>
                <li><a href="#projects">Projects</a></li>
                <li><a href="#contact">Contact</a></li>
            </ul>
        </div><!-- /.navbar-collapse -->
    </div><!-- /.container-fluid -->
</nav>

我的 CSS:

.transparent {
    background:transparent;
}

为了完成我的 JS:

$(document).ready(function(){
    if (window.matchMedia("(min-width: 768px)").matches) {   
        var scroll_start = 0;
        var startchange = $('.brand-name');
        var offset = startchange.offset();
        $(document).scroll(function() { 
          scroll_start = $(this).scrollTop();
          if(scroll_start > offset.top) {
              $('.navbar').animate({backgroundColor: "#222222"}, {duration:(500)});
           } else {
              $('.navbar').animate({backgroundColor: "transparent"}, {duration:(500)});
           }
        });
    }
    else {$('.navbar').css('background-color', '#222222');}
});

那么我怎样才能加快整个过程呢?

【问题讨论】:

  • @Popnoodles 是的,它用于平滑的东西(0.5 秒)。我谈论检测所需的时间
  • @Popnoodles 看看问题,我已经编辑了 html 脚本
  • jsfiddle.net/38ztjw32 没有从给定的代码中得到任何东西
  • @Popnoodles 我用的是 Bootstrap,我想把它放在 jsfiddle 上
  • 添加了引导程序jsfiddle.net/38ztjw32/2

标签: javascript jquery twitter-bootstrap background navbar


【解决方案1】:

您正在排队动画。 .stop()他们每次。

$('.navbar').stop().animate({backgroundColor: "#222222"}, {duration:(500)});

$('.navbar').stop().animate({backgroundColor: "transparent"}, {duration:(500)});

【讨论】:

  • 谢谢,它工作得更好,但我们第一次访问网站时,栏是黑色的,而且为了响应,它也有点小错误。我们该如何解决?
  • 本篇未涵盖的其他问题需要作为其他问题提出。要在不滚动的情况下触发它(在页面加载时),请附加 .trigger('scroll')
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-10-21
  • 1970-01-01
  • 2012-12-02
  • 1970-01-01
  • 1970-01-01
  • 2012-04-02
相关资源
最近更新 更多