Ширина Navbar, положение фиксированное, но не липкое - PullRequest
0 голосов
/ 14 ноября 2018

У меня проблема с изменением ширины моего navbar.Я хочу, чтобы navbar растянулся по экрану с небольшим зазором на каждом конце.Я использовал position: fixed и width: xx% в своем CSS для достижения этой цели.Тем не менее, я хотел бы знать, возможно ли сделать панель навигации неприлипающей, поскольку при прокрутке она остается в верхней части страницы.Я пробовал искать в Интернете, но безрезультатно.

Я использую пример W3 для иллюстрации своей проблемы.

Мне кажется, что это может быть просто плохой практикой с точки зрения манипулирования navbar слишком много?

body {
  font-family: Arial, Helvetica, sans-serif;
}

* {
  box-sizing: border-box;
}

.bg-img {
  background-image: url("http://panoramicireland.com/images/2016/03/15/panoramic-ireland-dublin-3513.jpg");
  min-height: 380px;
  background-position: center;
  background-repeat: no-repeat;
  background-size: cover;
  position: relative;
}

.container {
  position: absolute;
  margin: 20px;
  width: auto;
}

.topnav {
  position: fixed;
  overflow: hidden;
  background-color: #333;
  width: 93%
}

.topnav a {
  float: left;
  color: #f2f2f2;
  text-align: center;
  padding: 14px 16px;
  text-decoration: none;
  font-size: 17px;
}

.topnav a:hover {
  background-color: #ddd;
  color: black;
}
<h2>Navbar on Image</h2>
<div class="bg-img">
  <div class="container">
    <div class="topnav">
      <a href="#home">Home</a>
      <a href="#news">News</a>
      <a href="#contact">Contact</a>
      <a href="#about">About</a>
    </div>
  </div>
</div>
<h2>Lorem Ipsum Dolor</h2>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor
  in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor
  in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>

<div class="line"></div>

<h2>Lorem Ipsum Dolor</h2>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor
  in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>

<div class="line"></div>

<h2>Lorem Ipsum Dolor</h2>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor
  in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>

<div class="line"></div>

Ответы [ 2 ]

0 голосов
/ 14 ноября 2018

Во-первых, если я правильно понимаю, вы не хотите, чтобы ваш navbar был липким. В этом случае вам не нужен атрибут position: fixed. Я предлагаю вам прочесть и понять свойство CSS position , так как очень важно понимать расположение элементов на веб-странице, чтобы иметь возможность легко манипулировать страницей. Вы можете начать, прочитав это из wschools: https://www.w3schools.com/cssref/pr_class_position.asp

Кроме того, я думаю, что вы правы, что слишком много манипулируете навигационной панелью. Ваш класс navbar находится внутри контейнера, который не служит реальной цели в вашем контексте, он избыточен. Существует несколько способов решения этой проблемы, но я выбрал способ удаления класса container и внесение следующих изменений в класс topnav :

.topnav {
  position: relative;
  overflow: hidden;
  background-color: #333;
  width: 93%;
  margin: 0 auto;
}

Относительное позиционирование поместит вашу панель навигации вверху страницы, а margin: 0 auto обеспечит центрирование элемента.

0 голосов
/ 14 ноября 2018

Попробуйте просто изменить:

.topnav {
  overflow: hidden;
  background-color: #333;
  width: 93vw;
}

Посмотреть на CodePen

Это то, что вы искали?

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