【问题标题】:I can't make the nav bar and search bar shrink with the browser for bootstrap react我无法使用浏览器缩小导航栏和搜索栏以进行引导反应
【发布时间】:2020-03-31 20:50:39
【问题描述】:

我的主要目标是在浏览器缩小时缩小搜索栏。我实现样式的方式有问题,因为它不会缩小。每当我尝试它时,它仍然会退出页面。

return (
  <div className="Header">
    <div>
      <Navbar className="page-head container-fluid">
        <div className="logo">
          <Navbar.Brand href="/" className="text-light">
            <i className="fas fa-graduation-cap"></i> Get C's
          </Navbar.Brand>
        </div>
        <Navbar.Toggle
          aria-controls="basic-navbar-nav"
          className="text-light"
        />
        <Navbar.Collapse id="basic-navbar-nav">
          <Nav className="mr-auto">
            <NavDropdown
              title={this.state.categories}
              id="collasible-nav-dropdown"
              style={{ marginLeft: "14%" }}
            >
              <NavDropdown.Item
                onClick={() => this.setState({ categories: "All" })}
              >
                All
              </NavDropdown.Item>
              <NavDropdown.Divider />
              <NavDropdown.Item
                onClick={() => this.setState({ categories: "Appliances" })}
              >
                Appliances
              </NavDropdown.Item>

              <NavDropdown.Item
                onClick={() => this.setState({ categories: "Books" })}
              >
                Books
              </NavDropdown.Item>

              <NavDropdown.Item
                onClick={() =>
                  this.setState({ categories: "Clothes&Shoes" })
                }
              >
                Clothing & Shoes
              </NavDropdown.Item>

              <NavDropdown.Item
                onClick={() => this.setState({ categories: "Electronics" })}
              >
                Electronics
              </NavDropdown.Item>
              <NavDropdown.Item
                onClick={() => this.setState({ categories: "Services" })}
              >
                Services
              </NavDropdown.Item>
            </NavDropdown>
            <Form
              className="page-head search-form "
              // inline
              // style={{ margin: "auto" }}
              onSubmit={this.onSearch}
            >
              <FormControl
                type="text"
                placeholder="Search..."
                className=" mr-sm-2 search-box"
                // style={{ margin: "auto", width: "90%" }}
                onChange={e => {
                  this.setState({ queries: e.target.value });
                }}
              />
              <Button variant="outline-info search-button" type="submit">
                <i className="fas fa-search"></i>
              </Button>
            </Form>
          </Nav>
        </Navbar.Collapse>
      </Navbar>
    </div>
  </div>
);

到目前为止我实现的 CSS 是这样的。我尝试使用 flex-grow,但没有效果。我最大的问题也是宽度,我似乎无法正常工作。导航栏不会覆盖浏览器的整个宽度。

    :root {
  --primary-color: #343a40;
}

/* Reset */
* {
  box-sizing: border-box;
  margin: 0;
  padding: 0;
}
/* Navbar */
nav {
  background-color: var(--primary-color);
  color: white;
}
.navbar-light .navbar-nav .nav-link {
  color: white;
}
.navbar-light .navbar-nav .nav-link:hover {
  color: gray;
}
/* Navbar header */
.page-head {
  display: flex;
  align-items: center;
}
.log {
  flex-shrink: 0;
}
/* Search bar */
.search-form {
  margin: 0 1rem;
  width: 80rem;
  flex-grow: 1;
  min-width: 18rem;
}

.search-box {
  width: 100%;
  padding: 0.4rem;
}
.search-button {
  display: flex;
  margin: 0;
}

【问题讨论】:

标签: css reactjs react-bootstrap


【解决方案1】:

查看您的 Codesandbox,当 Bootstrap 未加载时,在为其添加 CDN 引用后,通过以下小的更改,导航栏开始工作。

  • 将 Navbar className="page-head container-fluid" 更新为:Navbar bg="light" expand="lg"
    // 您当然可以使用:xs,sm,md, lg,具体取决于您希望导航栏何时展开..

现在您可以选择在导航栏和底部的相关 div 之前关注这些标签中的任何错误样式,但这些更改将是可选更改,具体取决于整体网站/设计要求。

【讨论】:

  • 这样的作品,但我不希望搜索栏消失。像亚马逊搜索栏一样,我想随着浏览器的缩小而缩小
  • 为此,您可以将 Search 移出 NavBar.Collapse 并移到 NavBar 中,并将导航的其余部分放在 NavBar.Collapse 中
  • 最后一个愚蠢的问题,如果我希望“全部”留在搜索栏上,我该怎么做? (“全部”有自己的下拉菜单,如亚马逊类别)
  • 一切都可以有一个单独的导航栏,或者你希望它显示在搜索旁边它可以进入同一个导航栏,这完全取决于你希望它在屏幕上显示的位置。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-20
  • 2017-05-12
  • 1970-01-01
  • 1970-01-01
  • 2022-07-25
相关资源
最近更新 更多