【问题标题】:Bootstrap: Div with 100% width inside containerBootstrap:容器内宽度为 100% 的 Div
【发布时间】:2018-01-04 09:19:44
【问题描述】:

我想创建一个浏览器全宽的 div。 div 位于容器内,我无法更改该结构。

现在容器内的 div 只有容器的宽度。即使我将它设置为 position: absolute 就像这里:How to create a 100% screen width div inside a container in bootstrap?

div 是引导导航栏中的下拉菜单。 有没有办法让它达到 100% 的屏幕尺寸?导航栏中有什么东西会改变位置/宽度吗?

这是我的代码:

.dropdown-menu {min-width: 100%; position: absolute; display:block;}
<script src="https://code.jquery.com/jquery-3.1.1.slim.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-alpha.6/js/bootstrap.min.js"></script>
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-alpha.6/css/bootstrap.min.css" rel="stylesheet"/>
<div class="container">
<nav class="navbar navbar-toggleable-md navbar-light bg-faded">
  <button class="navbar-toggler navbar-toggler-right" type="button" data-toggle="collapse" data-target="#navbarNavDropdown" aria-controls="navbarNavDropdown" aria-expanded="false" aria-label="Toggle navigation">
    <span class="navbar-toggler-icon"></span>
  </button>
  <a class="navbar-brand" href="#">Navbar</a>
  <div class="collapse navbar-collapse" id="navbarNavDropdown">
    <ul class="navbar-nav">
      <li class="nav-item active">
        <a class="nav-link" href="#">Home <span class="sr-only">(current)</span></a>
      </li>
      <li class="nav-item">
        <a class="nav-link" href="#">Features</a>
      </li>
      <li class="nav-item">
        <a class="nav-link" href="#">Pricing</a>
      </li>
      <li class="nav-item dropdown">
        <a class="nav-link dropdown-toggle" href="http://example.com" id="navbarDropdownMenuLink" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
          Dropdown link
        </a>
        <div class="dropdown-menu" aria-labelledby="navbarDropdownMenuLink">
          <a class="dropdown-item" href="#">Action</a>
          <a class="dropdown-item" href="#">Another action</a>
          <a class="dropdown-item" href="#">Something else here</a>
        </div>
      </li>
    </ul>
  </div>
</nav>
</div>

【问题讨论】:

标签: html css twitter-bootstrap drop-down-menu navbar


【解决方案1】:

CSS 有一个单位vw,它代表视口宽度。 1vw 代表屏幕宽度的 1%。

因此,您可以将width: 100vw设置为占据屏幕宽度的100%。

更新

对于当前标记,您可以设置position: fixed,但您必须手动设置正确的top 值。不幸的是,如果您的页面超过屏幕高度,您的菜单将保持相同的位置。演示:

body {
  margin: 0;
}

.dropdown-menu {
  position: fixed !important;
  top: 56px;
  right: 0;
  left: 0;
}

@media (max-width: 991px) {
  .navbar-toggleable-md .navbar-nav .dropdown-menu {
    top: 215px;
  }
}
<script src="https://code.jquery.com/jquery-3.1.1.slim.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-alpha.6/js/bootstrap.min.js"></script>
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-alpha.6/css/bootstrap.min.css" rel="stylesheet" />
<div class="container">
  <nav class="navbar navbar-toggleable-md navbar-light bg-faded">
    <button class="navbar-toggler navbar-toggler-right" type="button" data-toggle="collapse" data-target="#navbarNavDropdown" aria-controls="navbarNavDropdown" aria-expanded="false" aria-label="Toggle navigation">
    <span class="navbar-toggler-icon"></span>
  </button>
    <a class="navbar-brand" href="#">Navbar</a>
    <div class="collapse navbar-collapse" id="navbarNavDropdown">
      <ul class="navbar-nav">
        <li class="nav-item active">
          <a class="nav-link" href="#">Home <span class="sr-only">(current)</span></a>
        </li>
        <li class="nav-item">
          <a class="nav-link" href="#">Features</a>
        </li>
        <li class="nav-item">
          <a class="nav-link" href="#">Pricing</a>
        </li>
        <li class="nav-item dropdown">
          <a class="nav-link dropdown-toggle" href="http://example.com" id="navbarDropdownMenuLink" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
          Dropdown link
        </a>
          <div class="dropdown-menu" aria-labelledby="navbarDropdownMenuLink">
            <a class="dropdown-item" href="#">Action</a>
            <a class="dropdown-item" href="#">Another action</a>
            <a class="dropdown-item" href="#">Something else here</a>
          </div>
        </li>
      </ul>
    </div>
  </nav>
</div>

要实现所需的标记,您必须删除 position: relative 以便所有祖先应用相对于窗口的绝对定位。所以你必须解决这个问题。此外,您必须手动设置top(因为您正在设置相对于窗口的绝对定位)。演示:

/* delete relatively position */
.container,
.navbar,
.nav-item {
  position: static !important;
}

/* set absolute positioning */
.dropdown-menu {
  position: absolute !important;
  top: 55px !important;
  left: 0;
  right: 0;
}

@media (max-width: 991px) {
  /* add centering for extra container */
  .flex-center {
    display: flex;
    align-items: center;
  }
  
  /* fix positioning for toggler */
  /* it will be broken to removed relative positioning for container */
  .navbar-toggler-right {
    position: static !important;
    margin-left: auto;
    margin-right: 1rem;
  }
  
  .navbar-toggleable-md .navbar-nav .dropdown-menu {
    top: 215px !important;
  }
}
<script src="https://code.jquery.com/jquery-3.1.1.slim.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-alpha.6/js/bootstrap.min.js"></script>
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-alpha.6/css/bootstrap.min.css" rel="stylesheet" />
<div class="container">
  <nav class="navbar navbar-toggleable-md navbar-light bg-faded">
    <div class="flex-center">
      <a class="navbar-brand" href="#">Navbar</a>
      <button class="navbar-toggler navbar-toggler-right" type="button" data-toggle="collapse" data-target="#navbarNavDropdown" aria-controls="navbarNavDropdown" aria-expanded="false" aria-label="Toggle navigation">
        <span class="navbar-toggler-icon"></span>
      </button>
    </div>
    <div class="collapse navbar-collapse" id="navbarNavDropdown">
      <ul class="navbar-nav">
        <li class="nav-item active">
          <a class="nav-link" href="#">Home <span class="sr-only">(current)</span></a>
        </li>
        <li class="nav-item">
          <a class="nav-link" href="#">Features</a>
        </li>
        <li class="nav-item">
          <a class="nav-link" href="#">Pricing</a>
        </li>
        <li class="nav-item dropdown">
          <a class="nav-link dropdown-toggle" href="http://example.com" id="navbarDropdownMenuLink" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
          Dropdown link
        </a>
          <div class="dropdown-menu" aria-labelledby="navbarDropdownMenuLink">
            <a class="dropdown-item" href="#">Action</a>
            <a class="dropdown-item" href="#">Another action</a>
            <a class="dropdown-item" href="#">Something else here</a>
          </div>
        </li>
      </ul>
    </div>
  </nav>
</div>

【讨论】:

  • 另外position: fixed; left: 0; right: 0; 将允许您独立于父项指定子项的尺寸。
猜你喜欢
  • 2015-05-09
  • 2012-07-25
  • 1970-01-01
  • 2013-04-04
  • 2015-09-11
  • 2015-10-23
  • 2013-07-22
  • 2011-07-31
  • 2015-02-14
相关资源
最近更新 更多