javascript - 较长网页上的下拉菜单

标签 javascript jquery css reactjs ecmascript-6

我想像 this webpage 一样渲染一个下拉菜单这样当下拉菜单出现时,它会覆盖整个网页,删除滚动条,并卸载(?)网页的其余部分,但在此过渡期间您仍然会看到整个网页。我怎样才能实现这个功能?有没有办法卸载元素但仍然显示它们一段时间?谢谢!请查看下面的代码片段,了解与我目前正在做的事情类似的内容。

class Comp extends React.Component {
  constructor() {
    super();
    this.state = {
      clicked: false,
      divId: "off"
    }
    this.handleClick = this.handleClick.bind(this);
  }

  handleClick() {
    this.setState({clicked: !this.state.clicked});
    if (this.state.divId == "on") {
      this.setState({divId: "off"});
    } else {
      this.setState({divId: "on"});  
    }
  }

  render() {
    return (
      <div>
        <div id={this.state.divId}></div>
        <button onClick={this.handleClick}>Click Me</button>
        <div id="div1"></div>
        <div id="div1"></div>
        <div id="div1"></div>
        <div id="div1"></div>
        <div id="div1"></div>
      </div>
    );
  }
}

ReactDOM.render(<Comp />, app);
#div1 {
  background-color: red;
  height: 100px;
  width: 100px;
  margin-bottom: 15px;
}

button {
  position: absolute;
  z-index: 2;
}

#on {
  background-color: green;
  position: absolute;
  transition: height ease 0.5s;
  z-index: 1;
  width: 100%;
  height: 100%;

}

#off {
  background-color: green;
  position: absolute;
  z-index: 1;
  transition: height ease 0.5s;
  width: 100%;
  height: 0%;

}
<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://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<div id="app"></div>

最佳答案

隐藏和显示滚动条。请参阅代码中的注释。

class Comp extends React.Component {
  constructor() {
    super();
    this.state = {
      clicked: false,
      divId: "off"
    }
    this.handleClick = this.handleClick.bind(this);
  }

  handleClick() {
    this.setState({clicked: !this.state.clicked});
    if (this.state.divId == "on") {
      this.setState({divId: "off"});
      document.body.classList.remove("scrollbar-hide");//Remove CSS class
    } else {
      this.setState({divId: "on"});  
      document.body.classList.add("scrollbar-hide"); //Add CSS class
    }
  }

  render() {
    return (
      <div>
        <div id={this.state.divId}></div>
        <button onClick={this.handleClick}>Click Me</button>
        <div id="div1"></div>
        <div id="div1"></div>
        <div id="div1"></div>
        <div id="div1"></div>
        <div id="div1"></div>
      </div>
    );
  }
}

ReactDOM.render(<Comp />, app);
#div1 {
  background-color: red;
  height: 100px;
  width: 100px;
  margin-bottom: 15px;
}

button {
  position: absolute;
  z-index: 2;
}

#on {
  background-color: green;
  position: absolute;
  transition: height ease 0.5s;
  z-index: 1;
  width: 100%;
  height: 100%;

}

#off {
  background-color: green;
  position: absolute;
  z-index: 1;
  transition: height ease 0.5s;
  width: 100%;
  height: 0%;

}

/* CSS class to remove scrollbar. */
.scrollbar-hide {
  overflow: hidden;
}
<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://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<div id="app"></div>

关于javascript - 较长网页上的下拉菜单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47621461/

相关文章:

javascript - 知道为什么矩形不会出现在我的 Fabricjs Canvas 中吗?

css - 左侧变量较少

javascript - 使用 jQuery 或 PHP 将 CSS 应用于 html 文档中的单词/字母

javascript - 发送 html 到 window.print 函数而不渲染

php - 406 和 404 错误 - 仅 Firefox 有问题?

javascript - 如何将数组中的对象分配给箭头函数?

html - 在 Safari 中使用 CSS 动画动态大小的内容

javascript - 从给定的可变文本中的节点 HTML 中获取文本

jquery - 停止特定的 jQuery 动画

javascript - Ext js 6.2, 固定西面板不塌?