【问题标题】:Alternate for toggle class in react在反应中替代切换类
【发布时间】:2017-09-02 18:17:03
【问题描述】:

这是显示导航图标的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;
   }

在反应中,我试图在单击导航按钮时设置状态。反应状态正在改变,但导航栏没有打开。

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

 }

我看到开发者工具中的元素,状态正在改变。导航栏未打开 有人可以解释一下如何像在 onClick() 上一样在导航栏上切换类吗?

【问题讨论】:

    标签: css reactjs


    【解决方案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/

    【讨论】:

    • 是的,它正在工作。我的坏处是当我点击导航按钮时,正文内容被隐藏了
    • 什么是变化。我无法找到更改
    • 感谢您在这方面帮助我
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-12-01
      • 1970-01-01
      • 2018-09-12
      • 2019-01-16
      • 1970-01-01
      • 2022-01-15
      • 2019-05-15
      相关资源
      最近更新 更多