React Bootstrap,为 NavItems 添加悬停效果

Posted

技术标签:

【中文标题】React Bootstrap,为 NavItems 添加悬停效果【英文标题】:React Bootstrap, Adding Hover Effects to NavItems 【发布时间】:2018-03-29 08:19:03 【问题描述】:

React Bootstrap 的新手,我一直在尝试为组件添加一些自定义样式。

通过使用 chrome 检查器查找类名,我能够从导航中删除边框半径,但我无法为我的导航项添加悬停效果。

这是我的组件。

 <Navbar inverse collapseOnSelect className="nav-bar">
    <Navbar.Header>
      <Navbar.Brand>
        <a href="#">efrt</a>
      </Navbar.Brand>
      <Navbar.Toggle />
    </Navbar.Header>
    <Navbar.Collapse>
      <Nav>
        <NavItem eventKey=1 href="#">Features</NavItem>
        <NavItem eventKey=2 href="#">Who we Are</NavItem>
      </Nav>
      <Navbar.Form pullRight>
        <UniversalButton style="primary" name='Login' />
      </Navbar.Form>
      <Nav pullRight>
        <NavDropdown eventKey=3 title="Signup" id="basic-nav-dropdown">
          <MenuItem eventKey=3.3>Member</MenuItem>
          <MenuItem divider />
          <MenuItem eventKey=3.3>Coach</MenuItem>
        </NavDropdown>
      </Nav>
    </Navbar.Collapse>
  </Navbar>

从 Chrome 检查器复制过来,我得到以下作为我想要进行更改的类/元素

.navbar-inverse .navbar-nav>li>a 
    color: #9d9d9d;
 

当我尝试以下操作时,没有任何反应。我尝试添加自定义类名也没有效果。

.navbar-inverse.navbar-nav>li>a:hover 
    background: grey;
 

任何帮助表示赞赏:)!

【问题讨论】:

您能以任何方式显示您的代码吗?适当地 ?通过托管在某些服务器或其他东西上..?? 【参考方案1】:

.navbar-inverse 后面缺少一个空格,因为.navbar-nav 是一个孩子:

.navbar-inverse .navbar-nav > li > a:hover 
  background-color: gray;

运行示例:

const  Navbar, Nav, NavItem, NavDropdown, MenuItem  = ReactBootstrap;

class App extends React.Component 
  render() 
    return (
      <div>
        <Navbar inverse collapseOnSelect className="nav-bar">
          <Navbar.Header>
            <Navbar.Brand>
              <a href="#">efrt</a>
            </Navbar.Brand>
            <Navbar.Toggle />
          </Navbar.Header>
          <Navbar.Collapse>
            <Nav>
              <NavItem eventKey=1 href="#">
                Features
              </NavItem>
              <NavItem eventKey=2 href="#">
                Who we Are
              </NavItem>
            </Nav>
            <Navbar.Form pullRight />
            <Nav pullRight>
              <NavDropdown eventKey=3 title="Signup" id="basic-nav-dropdown">
                <MenuItem eventKey=3.3>Member</MenuItem>
                <MenuItem divider />
                <MenuItem eventKey=3.3>Coach</MenuItem>
              </NavDropdown>
            </Nav>
          </Navbar.Collapse>
        </Navbar>
      </div>
    );
  


ReactDOM.render(<App />, document.getElementById("root"));
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-bootstrap/0.31.3/react-bootstrap.min.js"></script>
<style>
  .navbar-inverse .navbar-nav>li>a:hover 
    background-color: green;
  
</style>
<div id="root"></div>

【讨论】:

太棒了,我让它工作了。但是,我想知道如果我把它放在我的 rails stylesheets 文件夹中为什么它没有更新。这些更改只有在我将样式标记添加到根视图时才会发生。 你检查文件加载的顺序了吗?也许您在bootstrap.css 之前加载了您的自定义css,这将使引导程序覆盖您的规则。或者,也许您正在使用类似 css-modules 或其他 css 加载器来更改您的 css 类(例如向它们添加哈希),并且基本上您并没有真正覆盖引导程序的类。

以上是关于React Bootstrap,为 NavItems 添加悬停效果的主要内容,如果未能解决你的问题,请参考以下文章

使用 react-bootstrap 时组件未定义

如何修复 CSS 导航闪烁问题

奇怪的反应编译器行为

将分页从“react-js-pagination”转换为“react-bootstrap”分页

将 html bootstrap 转换为 react.js jsx 样式后更改 css 样式

在 React 中将子元素作为道具传递