Панель навигации не придерживается прокрутки - PullRequest
0 голосов
/ 07 апреля 2020

У меня есть компонент реагирования navbar с html, который использует bootstrap. Я хотел бы, чтобы он придерживался вершины, когда она прокручивается там (над ней есть страница контента). Я попытался применить position-sticky к div-оболочке, и я также применил sticky-top к самой навигационной панели, но ничего из этого не сработало. Он просто прокручивается из поля зрения.

<div className="d-none d-md-block position-sticky">
      <nav className="navbar sticky-top bg-dark navbar-dark navbar-expand">
        <a className="navbar-brand" href="#initialImage">
          name
        </a>
        <ul className="navbar-nav">
          <li className="nav-item">
            <a className="nav-link text-white font-weight-bold" href="#">
              Home
            </a>
          </li>
          <li className="nav-item">
            <a className="nav-link text-white font-weight-bold" href="#">
              Shop Collection One
            </a>
          </li>
          <li className="nav-item">
            <a className="nav-link text-white font-weight-bold" href="#">
              Shop Collection Two
            </a>
          </li>
          <li className="nav-item">
            <a className="nav-link text-white font-weight-bold" href="#">
              A Message 
            </a>
          </li>
          <li className="nav-item">
            <a className="nav-link text-white font-weight-bold" href="#">
              Contact
            </a>
          </li>
        </ul>
      </nav>
    </div>

1 Ответ

0 голосов
/ 07 апреля 2020

Кажется, что в вашей разметке есть пара неправильных и ненужных вещей.

  1. Вам не нужно использовать отдельный div для отзывчивости BS Navbar. BS предоставляет встроенный класс для него.

  2. Далее, ваши элементы li некорректны. Когда я использую ваш код даже со ссылками на таблицы стилей BS, он все равно показывает обычные ссылки ul.

Я отформатировал ссылки для вас ( взяты из w3schools ) и изменил согласно вашему требованию.

Обратите внимание: Во время выполнения фрагмента кода вы можете столкнуться с необычным поведением ссылок из-за размера экрана. Я бы порекомендовал вам запустить этот код в веб-браузере. Используемая версия Bootstrap: 4.0 .

ВЕРСИЯ 1: Эта версия проста. Просто прокручивает навигационную панель при прокрутке.

<!DOCTYPE html>
<html lang="en">

<head>
  <title>Bootstrap Example</title>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css">
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.16.0/umd/popper.min.js"></script>
  <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.4.1/js/bootstrap.min.js"></script>
</head>

<body style="height:1500px">

  <nav class="navbar navbar-expand-sm bg-dark navbar-dark fixed-top">
    <a class="navbar-brand" href="#">My WebsiteName</a>
    <ul class="navbar-nav">
      <li class="nav-item">
        <a class="nav-link" href="#">Shop Collection One</a>
      </li>
      <li class="nav-item">
        <a class="nav-link" href="#">Shop Collection Two</a>
      </li>
      <li class="nav-item">
        <a class="nav-link" href="#">A Message</a>
      </li>
      <li class="nav-item">
        <a class="nav-link" href="#">Contact</a>
      </li>
    </ul>
  </nav>

  <div class="container-fluid" style="margin-top:80px">
    <h3>Top Fixed Navbar</h3>
    <p>A fixed navigation bar stays visible in a fixed position (top or bottom) independent of the page scroll.</p>
    <h1>Scroll this page to see the effect</h1>
  </div>

</body>

</html>

ВЕРСИЯ 2: Эта панель навигации является модификацией Версии 1, где панель навигации изначально не является липкой, но при прокрутке и достижении определенной прокрутки количество, это придерживается navbar.

<!DOCTYPE html>
<html lang="en">

<head>
  <title>Bootstrap Example</title>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css">
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.16.0/umd/popper.min.js"></script>
  <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.4.1/js/bootstrap.min.js"></script>
</head>

<body style="height:1500px">

  <div class="container-fluid">
    <br>
    <h3>Hello World</h3>
    <p>Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s</p>
  </div>

  <nav class="navbar navbar-expand-sm bg-dark navbar-dark sticky-top">
    <a class="navbar-brand" href="#">MyWebSite</a>
    <ul class="navbar-nav">
      <li class="nav-item">
        <a class="nav-link" href="#">Home</a>
      </li>
      <li class="nav-item">
        <a class="nav-link" href="#">Shop Collection One</a>
      </li>
      <li class="nav-item">
        <a class="nav-link" href="#">Shop Collection Two</a>
      </li>
      <li class="nav-item">
        <a class="nav-link" href="#">A Message</a>
      </li>
      <li class="nav-item">
        <a class="nav-link" href="#">Contact</a>
      </li>
    </ul>
  </nav>

  <div class="container-fluid"><br>
    <p>Some example text. Some example text. Some example text. Some example text. Some example text.</p>
    <p>Some example text. Some example text. Some example text. Some example text. Some example text.</p>
    <p>Some example text. Some example text. Some example text. Some example text. Some example text.</p>
    <p>Some example text. Some example text. Some example text. Some example text. Some example text.</p>
  </div>

</body>

</html>

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...