代码之家  ›  专栏  ›  技术社区  ›  Björn C

像引导模式一样在导航栏上悬停时如何使网页变暗?

  •  0
  • Björn C  · 技术社区  · 8 年前

    在模式打开时,是否可以使用与引导程序在调暗页面时使用的相同过程?

    我想当我悬停引导程序导航栏时使页面变暗。
    我可不想把导航栏搞得一团糟!

    模态调光如何工作?
    我可以使用相同的CSS吗?

    2 回复  |  直到 8 年前
        1
  •  1
  •   mahan    8 年前

    你可以用纯的 CSS 所有主要浏览器都支持。

    .navbar:hover+.nav-sibling {
      display: block;
      opacity: 0.5;
      background: rgba(0, 0, 0, 1);
      transition: opacity .15s linear;
    }
    
    .nav-sibling {
      position: fixed;
      display: none;
      overflow: hidden;
      outline: 0;
      /* equal to the navbar height */
      top: 56px;
      bottom: 0;
      left: 0;
      right: 0;
    }
    <link href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.1.1/css/bootstrap.css" rel="stylesheet" />
    <nav class="navbar navbar-expand-lg navbar-light bg-light">
      <a class="navbar-brand" href="#">Navbar</a>
      <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
            <span class="navbar-toggler-icon"></span>
          </button>
    
      <div class="collapse navbar-collapse" id="navbarSupportedContent">
        <ul class="navbar-nav mr-auto">
          <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="#">Link</a>
          </li>
          <li class="nav-item dropdown">
            <a class="nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
                  Dropdown
                </a>
            <div class="dropdown-menu" aria-labelledby="navbarDropdown">
              <a class="dropdown-item" href="#">Action</a>
              <a class="dropdown-item" href="#">Another action</a>
              <div class="dropdown-divider"></div>
              <a class="dropdown-item" href="#">Something else here</a>
            </div>
          </li>
          <li class="nav-item">
            <a class="nav-link disabled" href="#">Disabled</a>
          </li>
        </ul>
        <form class="form-inline my-2 my-lg-0">
          <input class="form-control mr-sm-2" type="search" placeholder="Search" aria-label="Search">
          <button class="btn btn-outline-success my-2 my-sm-0" type="submit">Search</button>
        </form>
      </div>
    </nav>
    <div class="nav-sibling">
    
    </div>
    <footer class=" container-fluid bg-dark text-white py-5">
      <div class="row">
        <div class="col-12">
          <h6>Lorem ipsum</h6>
          <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam eget sapien dolor. Nam aliquam augue ante, et sodales felis vulputate iaculis.</p>
        </div>
      </div>
    </footer>

    nav-sibling 与引导模式代码相同,但 top 属性。


    更新

    不透明度为元素及其所有子元素设置不透明度值;而rgba仅为单个声明设置不透明度值。- StackOverflow - opacity vs RGBA

    最好使用介于 0 和 1 对于 alpha channel 而不是 opacity . 在下面的代码中,我使用了 0.9 。

    .navbar:hover+.nav-sibling {
      display: block;
      background-color: rgba(0, 0, 0, 0.9);
      transition: all .15s linear;
    }
        2
  •  1
  •   Boric    8 年前

    不,不能使用现有的引导模式效果,因为这样会使页面上的所有内容(包括导航栏)变暗。