【问题标题】:Making NavItem Background color the same as NavBar使 NavItem 背景颜色与 NavBar 相同
【发布时间】:2018-12-31 11:25:18
【问题描述】:

我希望我的 navitem 在单击或未单击时如下图所示:

但是,点击后是这样的:

我尝试了多种方法来实现 navitem 标签的 css 属性以获得与其导航栏相似的背景,但均未成功。下面是我的反应代码和相关的 css 实现:

//React Code:

      <div className="App">
        <Navbar fluid collapseOnSelect fixedTop>
          <Navbar.Header>
            <Navbar.Brand>
             <img src={store_logo} alt="logo" height="70" width="75"/>
              <Link to="/"><p>StoreName</p></Link>
            </Navbar.Brand>
            <Navbar.Toggle />
          </Navbar.Header>
          <Navbar.Collapse>
            <Nav pullRight>
              {this.state.isAuthenticated
                ? <Fragment>
                    <LinkContainer to="/settings">
                      <NavItem>Settings</NavItem>
                    </LinkContainer>
                    <NavItem onClick={this.handleLogout}>Logout</NavItem>
                  </Fragment>
                : <Fragment>
                    <IndexLinkContainer exact to="/about">
                    <NavItem eventKey={1}>About</NavItem>
                    </IndexLinkContainer>
                    <LinkContainer to="/contact">
                      <NavItem eventKey={2}>Contact</NavItem>
                    </LinkContainer>
                    <LinkContainer to="/blog">
                      <NavItem>Blog</NavItem>
                    </LinkContainer>
                    <LinkContainer to="/signup">
                      <NavItem>Signup</NavItem>
                    </LinkContainer>
                    <LinkContainer to="/login">
                      <NavItem>Login</NavItem>
                    </LinkContainer>
                  </Fragment>
              }
            </Nav>
          </Navbar.Collapse>
        </Navbar>
        </div>
//CSS Code:

.App .navbar-brand,
.App .navbar-brand p {
  color: black;
  font-weight: bold;
}

.App .nav {
  font-weight: bold;
  padding-top: 30px;
}

.navbar-default .navbar-nav > li > a {
     color: black;
     background-color: yellow;
     border-color: green;
     background-image: none;
   }

.App nav.navbar.navbar-default.navbar-fixed-top {
    border-color: green;
    background-color: yellow;
    height: 120px;
    color: black;
}

任何关于我可能做错了什么的想法/帮助都会受到欢迎。谢谢

【问题讨论】:

    标签: html css reactjs react-bootstrap react-router-bootstrap


    【解决方案1】:

    当您使用 CSS 框架并想要重新定义样式时,您需要覆盖框架提供的原始样式。

    如果你看original CSS(搜索.navbar-default .navbar-navnavbar-nav),你可以看到

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

    要覆盖所有这些,你可以把

    .navbar-default .navbar-nav,
    .navbar-default .navbar-nav > li > a {
      color: black;
      background-color: yellow;
      border-color: green;
      background-image: none;
    }
    

    希望这会有所帮助。

    【讨论】:

    • 这帮助很大。我刚刚用下面的 sn-p 更新了我的 css 代码,以实现我想要的功能。谢谢@lmathl。 .navbar-default .navbar-nav > .active > a:focus { 颜色:黑色;背景颜色:黄色;边框颜色:绿色;背景图像:无; }
    • @Imathl,我在这里遇到了另一个与您的答案无关但与导航栏有关的挑战。如果它在你的小巷里,你能看看它吗? stackoverflow.com/questions/51623736/… 谢谢。
    猜你喜欢
    • 2016-07-13
    • 2020-05-28
    • 1970-01-01
    • 1970-01-01
    • 2014-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多