【问题标题】:Bootstrap 3 - Navbar color when expandedBootstrap 3 - 扩展时的导航栏颜色
【发布时间】:2017-08-01 19:41:01
【问题描述】:

我在 bootstrap 3 中创建了一个导航栏。导航栏为蓝色,当打开菜单时(鼠标悬停时),我想显示背景颜色为绿色的子菜单。

这是我的小提琴

https://jsfiddle.net/8jj2g4ym/2/

li.dropdown:hover > .dropdown-menu {
    display: block;
}

.navbar-default {
  background-color: blue;
  border-color: #e7e7e7;
}

@media (min-width: 768px) {
.navbar-nav>li>a {
    padding-top: 15px;
    padding-bottom: 4px;
}}


.navbar-default .navbar-nav>li>a {
    color:white;
    FONT-SIZE: 12pt;
    TEXT-DECORATION: none;
    FONT-FAMILY: Arial;
    WHITE-SPACE: nowrap;
    DISPLAY: block;
}

.navbar-default .navbar-nav > li > a:hover,
.navbar-default .navbar-nav > li > a:focus {
  color: #333;
  background-color: transparent;
}

.navbar-nav .open .dropdown-menu > li > a:hover,
  .navbar-nav .open .dropdown-menu > li > a:focus {
    background-color: green;
  }

.navbar-nav > li > a{
  padding-left:2px;
  padding-right:2px;
  margin-left:2px;
  margin-right:2px;
}
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet"/>
<nav class="navbar navbar-default"> 
  <div class="container-fluid" style="padding-left:2px;">
    <div class="navbar-header">
     
    
      <button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#navbar-collapse-1">
        <span class="icon-bar"></span>
        <span class="icon-bar"></span>
        <span class="icon-bar"></span>
      </button>
    </div>

    <!-- Collect the nav links, forms, and other content for toggling -->
    <div class="collapse navbar-collapse" id="navbar-collapse-1">
      <ul class="nav navbar-nav">
        <li class="dropdown">
          <a href="#" class="dropdown-toggle" data-toggle="dropdown">Menu0 <b class="caret"></b></a>
          <ul class="dropdown-menu">
            <li><a href="#" style="cursor:pointer">Menu1</a></li>
            <li><a href="#">Menu2</a></li>
            <li><a href="#">Menu3</a></li>
          </ul>
        </li>
      </ul>
      <ul class="nav navbar-nav" >
       <li ><a></a></li>
      </ul> 
      <ul class="nav navbar-nav">
        <li><a href="#">Menu4</a></li>
      
        
      </ul>
      
    </div>
    
  </div>
</nav>

虽然导航栏按预期显示为蓝色,但打开的项目的背景颜色为白色(我希望是绿色)。

我为此添加了一个样式,但它似乎没有影响。

.navbar-nav .open .dropdown-menu > li > a:hover,
  .navbar-nav .open .dropdown-menu > li > a:focus {
    background-color: green;
  }

【问题讨论】:

    标签: css twitter-bootstrap twitter-bootstrap-3


    【解决方案1】:

    解决办法如下:

    更改一些 css 规则以满足您的需求:

    li.dropdown:hover > .dropdown-menu {
        display: block;
        background: #bacd63 !important;
    }
    
    .navbar-nav .dropdown-menu > li > a:hover,
      .navbar-nav .dropdown-menu > li > a:focus {
        background: green !important;
      }
    

    这是小提琴:

    https://jsfiddle.net/8jj2g4ym/3/

    这里是代码sn-p:

    li.dropdown:hover > .dropdown-menu {
        display: block;
        background: #bacd63 !important;
    }
    
    .navbar-default {
      background-color: blue;
      border-color: #e7e7e7;
    }
    
    @media (min-width: 768px) {
    .navbar-nav>li>a {
        padding-top: 15px;
        padding-bottom: 4px;
    }}
    
    
    .navbar-default .navbar-nav>li>a {
        color:white;
        FONT-SIZE: 12pt;
        TEXT-DECORATION: none;
        FONT-FAMILY: Arial;
        WHITE-SPACE: nowrap;
        DISPLAY: block;
    }
    
    .navbar-default .navbar-nav > li > a:hover,
    .navbar-default .navbar-nav > li > a:focus {
      color: #333;
      background-color: transparent;
    }
    
    .navbar-nav .dropdown-menu > li > a:hover,
      .navbar-nav .dropdown-menu > li > a:focus {
        background: green !important;
      }
    
    .navbar-nav > li > a{
      padding-left:2px;
      padding-right:2px;
      margin-left:2px;
      margin-right:2px;
    }
    <link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet"/>
    <nav class="navbar navbar-default"> 
      <div class="container-fluid" style="padding-left:2px;">
        <div class="navbar-header">
         
        
          <button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#navbar-collapse-1">
            <span class="icon-bar"></span>
            <span class="icon-bar"></span>
            <span class="icon-bar"></span>
          </button>
        </div>
    
        <!-- Collect the nav links, forms, and other content for toggling -->
        <div class="collapse navbar-collapse" id="navbar-collapse-1">
          <ul class="nav navbar-nav">
            <li class="dropdown">
              <a href="#" class="dropdown-toggle" data-toggle="dropdown">Menu0 <b class="caret"></b></a>
              <ul class="dropdown-menu">
                <li><a href="#" style="cursor:pointer">Menu1</a></li>
                <li><a href="#">Menu2</a></li>
                <li><a href="#">Menu3</a></li>
              </ul>
            </li>
          </ul>
          <ul class="nav navbar-nav" >
           <li ><a></a></li>
          </ul> 
          <ul class="nav navbar-nav">
            <li><a href="#">Menu4</a></li>
          
            
          </ul>
          
        </div>
        
      </div>
    </nav>

    希望这会有所帮助。

    【讨论】:

    • 谢谢!只有一个后续问题。如何确保字体颜色为白色?我在同一个 CSS 中尝试了颜色:白色,但字体仍然是黑色。
    • 只需添加这条规则: .navbar-nav .dropdown-menu > li > a { color: #fff !important; }
    【解决方案2】:

    将此添加到您的 CSS:

    .navbar-nav > li > .dropdown-menu{background-color:green!important;}
    

    【讨论】:

      【解决方案3】:

      添加

      .navbar-toggle:hover {
          background-color: green !important;
      }
      

      li.dropdown:hover > .dropdown-menu {
          display: block;
      }
      
      .navbar-default {
        background-color: blue;
        border-color: #e7e7e7;
      }
      
      @media (min-width: 768px) {
      .navbar-nav>li>a {
          padding-top: 15px;
          padding-bottom: 4px;
      }}
      
      
      .navbar-default .navbar-nav>li>a {
          color:white;
          FONT-SIZE: 12pt;
          TEXT-DECORATION: none;
          FONT-FAMILY: Arial;
          WHITE-SPACE: nowrap;
          DISPLAY: block;
      }
      
      .navbar-default .navbar-nav > li > a:hover,
      .navbar-default .navbar-nav > li > a:focus {
        color: #333;
        background-color: transparent;
      }
      
      .navbar-nav .open .dropdown-menu > li > a:hover,
        .navbar-nav .open .dropdown-menu > li > a:focus {
          background-color: green;
        }
      
      .navbar-nav > li > a{
        padding-left:2px;
        padding-right:2px;
        margin-left:2px;
        margin-right:2px;
      }
      
      .navbar-toggle:hover {
          background-color: green !important;
      }
      <link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet"/>
      <nav class="navbar navbar-default"> 
        <div class="container-fluid" style="padding-left:2px;">
          <div class="navbar-header">
           
          
            <button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#navbar-collapse-1">
              <span class="icon-bar"></span>
              <span class="icon-bar"></span>
              <span class="icon-bar"></span>
            </button>
          </div>
      
          <!-- Collect the nav links, forms, and other content for toggling -->
          <div class="collapse navbar-collapse" id="navbar-collapse-1">
            <ul class="nav navbar-nav">
              <li class="dropdown">
                <a href="#" class="dropdown-toggle" data-toggle="dropdown">Menu0 <b class="caret"></b></a>
                <ul class="dropdown-menu">
                  <li><a href="#" style="cursor:pointer">Menu1</a></li>
                  <li><a href="#">Menu2</a></li>
                  <li><a href="#">Menu3</a></li>
                </ul>
              </li>
            </ul>
            <ul class="nav navbar-nav" >
             <li ><a></a></li>
            </ul> 
            <ul class="nav navbar-nav">
              <li><a href="#">Menu4</a></li>
            
              
            </ul>
            
          </div>
          
        </div>
      </nav>

      【讨论】:

        【解决方案4】:

        代替:

        .navbar-nav .open .dropdown-menu > li > a:hover,
        .navbar-nav .open .dropdown-menu > li > a:focus {
           background-color: green;
        }
        

        您应该删除.open 选择器,如下所示:

        .navbar-nav .dropdown-menu > li > a:hover,
        .navbar-nav .dropdown-menu > li > a:focus {
           background-color: green;
        }
        

        这是因为在ul 元素(带有navbar-nav 类)下没有带有open 类的元素,因此没有应用绿色背景。

        jsFiddle 中的工作代码

        【讨论】:

          【解决方案5】:

          试试这个代码老兄......

          这里是演示Codepen

              $(function() {
                  $(".navbar-toggle").hover(
                      function(){ $('.collapse').addClass('in') }
                      
                  );
              });
          
          $(function() {
                  $(".dropdown").hover(
                      function(){ $(this).addClass('open') },
                      function(){ $(this).removeClass('open') },
                    function(){ $('.collapse').removeClass('in') }
                  );
              });
          $(function() {
                  $("html").click(
                    function(){ $('.collapse').removeClass('in') }
                  );
              });
          .navbar-default .navbar-toggle:focus, .navbar-default .navbar-toggle:hover > .collapse {
              display: block;
          }
          
          .navbar-default {
            background-color: blue;
            border-color: #e7e7e7;
          }
          
          
          .navbar-nav>li>a {
              padding-top: 15px;
              padding-bottom: 4px;
          }
          
          
          .navbar-default .navbar-nav>li>a {
              color:white;
              FONT-SIZE: 12pt;
              TEXT-DECORATION: none;
              FONT-FAMILY: Arial;
              WHITE-SPACE: nowrap;
              DISPLAY: block;
          }
          
          .navbar-collapse{
            background:green;
          }
          
          .navbar-nav > li > a{
            padding-left:2px;
            padding-right:2px;
            margin-left:2px;
            margin-right:2px;
          }
          
          .navbar-nav{
            margin:0px 0px;
          }
          <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
          <link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet"/>
          <script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/js/bootstrap.min.js"></script>
          
          
          <body>
          <nav class="navbar navbar-default"> 
            <div class="container-fluid" style="padding-left:2px;">
              <div class="navbar-header">
               
              
                <button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#navbar-collapse-1">
                  <span class="icon-bar"></span>
                  <span class="icon-bar"></span>
                  <span class="icon-bar"></span>
                </button>
              </div>
          
              <!-- Collect the nav links, forms, and other content for toggling -->
              <div class="collapse navbar-collapse" id="navbar-collapse-1">
                <ul class="nav navbar-nav">
                  <li class="dropdown">
                    <a href="#" class="dropdown-toggle" data-toggle="dropdown">Menu0 <b class="caret"></b></a>
                    <ul class="dropdown-menu">
                      <li><a href="#" style="cursor:pointer">Menu1</a></li>
                      <li><a href="#">Menu2</a></li>
                      <li><a href="#">Menu3</a></li>
                    </ul>
                  </li>
                </ul>
                <ul class="nav navbar-nav" >
                 <li ><a></a></li>
                </ul> 
                <ul class="nav navbar-nav">
                  <li><a href="#">Menu4</a></li>
                
                  
                </ul>
                
              </div>
              
            </div>
          </nav>
          </body>

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2013-11-23
            • 1970-01-01
            • 2017-09-08
            • 1970-01-01
            • 1970-01-01
            • 2012-04-09
            • 1970-01-01
            相关资源
            最近更新 更多