替代切换类的反应

时间:2017-09-02 18:17:04

标签: css reactjs

这是显示导航图标

的html代码
   <div>
        <div id="mob-nav"  className={this.state.navbar + " right"}>
       <div onClick={this.toggle.bind(this)}>
         <div>click me</div>
       <div></div>
       <div></div>
      </div>
      <ul>
      <li><a href="#">Home</a></li>
      <li><a href="#">2</a></li>
      <li><a href="#">3</a></li>
      <li><a href="#">5</a></li>
      <li><a href="#"> 6</a></li>
      <li><a href="#">7</a></li>
      <li><a href="#">8</a></li>
      </ul>
    </div>
       <div id="left_panel">
        <div className="title">
          Naveen Tool
        </div>
        <div className="user_name">
            Name
        </div>
        <div className="submenu">
          <a href="structuring">Home</a>
          <a href="#">Log out</a>
        </div>
        </div>
    </div>

以下是切换导航

的css代码
 #mob-nav {
    position:fixed;
    z-index:1000;
    top:0px;
    bottom:0px;
    width:270px;
    -webkit-box-shadow: inset -11px 0px 33px -10px rgba(51,51,51,1);
    -moz-box-shadow: inset -11px 0px 33px -10px rgba(51,51,51,1);
    box-shadow: inset -11px 0px 33px -10px rgba(51,51,51,1);
    background-color: rgba(0,0,0,0.8);
    transform: translate3d(-270px,0,0);
    transition: transform 300ms ease;
}
.active-mob-nav #mob-nav {
    transform: translate3d(0,0,0);
}
#mob-nav ul{
    list-style:none;
    width: 100%;
padding: 0px;
}

.table_border{
  border: 1px solid black;
}

#mob-nav ul li a{
    display:block;
    text-align:center;
    text-decoration:none;
    color:#fff;
    background-color:#2e2e2e;
    padding:25px 0px;
}
#mob-nav ul li a:hover{
    background-color:#2eb187;
}
   .mob-nav-btn {
       position:absolute;
    left: 275px;
    top: 18px;
    line-height: 10px;
    padding: 16px;
       cursor:pointer;
       border-radius: 0px 10px 10px 0px;
       -moz-border-radius: 0px 10px 10px 0px;
       -webkit-border-radius: 0px 10px 10px 0px;
   }
   .mob-nav-btn > div{
       background-color: #f7f7f7;
    width: 25px;
       margin-top: 2px;
    margin-bottom: 2px;
    display: inline-block;
    margin-left: auto;
    margin-right: auto;
    height: 2px;
       transition: all 300ms;
   }
   .mob-nav-btn:hover > div{
       width: 30px;
       border-radius:0px;
   }

In react我在点击导航按钮时试图设置状态.React状态正在改变,但导航栏没有打开。

 toggle(){
 this.setState({
  navbar :"active-mob-nav"
 })

 }

我看到了开发人员工具中的元素,状态正在发生变化。 Navbar没有打开 有人可以解释我如何在导航栏上切换类,就像我在onClick()上那样?

2 个答案:

答案 0 :(得分:1)

错误的嵌套顺序。

使用样式:

#mob-nav.active-mob-nav {
    transform: translate3d(0,0,0);
}

并将className设置为顶级div:

<div id="mob-nav"  className={this.state.navbar + " right"}>

https://jsfiddle.net/69z2wepo/85223/

答案 1 :(得分:0)

我认为问题出在你的CSS身上而没有反应。您的CSS(.active-mob-nav #mob-nav)表示active-mob-nav有一个id mob-nav的孩子,而mob-nav有一个孩子.active-mob-nav。尝试更改CSS以获得预期的行为