在调整大小时更改导航栏标题颜色

时间:2017-05-16 14:13:10

标签: javascript jquery html css twitter-bootstrap

我对前端编码非常陌生。我正在使用Bootstrap 3创建自己的响应式网站。

当我调整浏览器窗口大小以模拟手机屏幕的大小时,我希望导航栏颜色(导航标题颜色?)在菜单图标单击时更改为白色。

我希望它在页面加载时保持透明,这是有效的。我希望滚动时标题更改为白色,这也是有效的。单击汉堡菜单图标时,可折叠导航标题下拉以显示菜单项,但背景保持透明,导致菜单项位于下面的内容之上。

我编写了以下脚本,但它似乎没有用。有没有人有建议?

<script>
    var windowsize = $(window).width();
    $(window).resize(funtion() {
        windowsize = $(window).width();
            if (windowsize < 440) {
                $("#myNavbar").click(function () {
                  $(".navbar-header").css({"background-color": "#ffffff", "-webkit-box-shadow": "0px 1px 4px 0px rgba(180, 180, 180, 0.5)", "-moz-box-shadow": "0px 1px 4px 0px rgba(180,180,180, 0.5)", "box-shadow": "0px 1px 4px 0px rgba(180,180,180, 0.5)"});
                });
            };
      });
</script>

7 个答案:

答案 0 :(得分:1)

由于您只是在点击时更改颜色,因此您不需要window.resize()事件。

<script>
    $("#myNavbar").click(function () {
        windowsize = $(window).width();

        if (windowsize < 440) {
            $(".navbar-header").css({"background-color": "#ffffff", "-webkit-box-shadow": "0px 1px 4px 0px rgba(180, 180, 180, 0.5)", "-moz-box-shadow": "0px 1px 4px 0px rgba(180,180,180, 0.5)", "box-shadow": "0px 1px 4px 0px rgba(180,180,180, 0.5)"});
        }
    });

</script>

我建议更改动态CSS以使用类。 JS将更改为$(".navbar-header").addClass("active");,您可以在css文件中定义活动类。

答案 1 :(得分:0)

您可以在CSS文件中使用Media Queries来获取所需内容。

@media screen and (max-width: 300px) {
    nav {
        background-color: #ffffff;
    }
}

答案 2 :(得分:0)

大致相同,当res小于440时点击导航栏将为白色: -

&#13;
&#13;
<script>
      $('.navbar').click(function() {
           $(this).toggleClass('open');
      });
</script>
&#13;
@media only screen and (max-width: 440px) {
    .navbar.open {
      background-color: #ffffff;
      -webkit-box-shadow: 0px 1px 4px 0px rgba(180, 180, 180, 0.5);
      -moz-box-shadow: 0px 1px 4px 0px rgba(180,180,180, 0.5);
      box-shadow: 0px 1px 4px 0px rgba(180,180,180, 0.5);
    }
}
&#13;
<div class="navbar"></div>
&#13;
&#13;
&#13;

答案 3 :(得分:0)

使用媒体查询是使css属性依赖于屏幕大小的最佳方法。

以下是一些可能符合您需求的代码:

.nav-bar {
    @media only screen and (max-width: 420px) {background:#fff;}
}

如果屏幕宽度为420px或更小,这会使导航栏变白。

答案 4 :(得分:0)

尝试以下方法:

$("#myNavbar").click(function () {
  $(".navbar-header").addClass("navbar-header-mobile");
});
/* Extra Small Devices, Phones */ 
    @media only screen and (min-width : 480px) {
      .navbar-header-mobile {
        background-color: #ffffff;
        -webkit-box-shadow: 0px 1px 4px 0px rgba(180, 180, 180, 0.5);
        -moz-box-shadow: 0px 1px 4px 0px rgba(180,180,180, 0.5);
        box-shadow: 0px 1px 4px 0px rgba(180,180,180, 0.5);
      }
    }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

如果需要,您只需添加一些可以将其删除的内容。

答案 5 :(得分:0)

我是通过JS中的类切换和CSS媒体查询来完成的。

JS -

$("#myNavbar").click(function() {
    $(".navbar-header").toggleClass('.active-nav')
});

CSS -

@media only screen and (min-width:440px) {
    .navbar-header.active-nav {
        background-color: #ffffff;
        -webkit-box-shadow: 0px 1px 4px 0px rgba(180, 180, 180, 0.5);
        -moz-box-shadow: 0px 1px 4px 0px rgba(180, 180, 180, 0.5);
        box-shadow: 0px 1px 4px 0px rgba(180, 180, 180, 0.5);
    }
}

答案 6 :(得分:0)

解决了这个问题。它不仅仅是标题颜色,我还需要更改可折叠的菜单背景。所以我使用了与标题颜色相同的逻辑。捕获可折叠导航栏的单击功能并切换颜色。这是我的最后一段代码:

<script>
  $(function (){
    $(".navbar-toggle").click(function() {
        if ($(window).width() < 440) {
            $(".navbar-collapse").toggleClass("menuActive");
            $(".navbar-header").toggleClass("menuActive");
        } 

    });
   }); 
</script>