Панель навигации с фиксированным положением не на всю ширину окна перекрывает ссылки и т.д.

#html #css

#HTML #css

Вопрос:

Я пытаюсь создать панель навигации с фиксированным положением, которая не является полной шириной окна и не привязана к окну браузера. Таким образом, при максимальной ширине 1200 пикселей она останавливается и остается там, а не следует за правой границей браузера, а ниже 1200 пикселей она прикрепляется к правой части браузера, чтобы соответствовать окну.

Приведенный ниже код обеспечивает то, что я только что описал, за исключением того, что он не позволяет пользователю нажимать на ссылку, которая находится рядом с панелью навигации «кликабельно». Это из max-width:1200px -за того, что и width: 100% что заставляет мою панель навигации перекрывать что-либо еще на этой странице, и я хотел бы это как-то исправить.

 #navigation {
  position: fixed;
  max-width: 1200px;
  width: 100%;
  z-index: 0;
}
#navigation svg {
  float: right;
}
#navigation svg polyline {
  fill: #F7F7F7;
  stroke: #B9D7D9;
  stroke-width: 2;
}
#navigation ul {
  position: absolute;
  top: 3px;
  right: 0.8rem;
  list-style-type: none;
  margin: 0;
  padding: 0;
  background-color: #F7F7F7;
}
#navigation li {
  float: left;
}  
 <div id="navigation">
  <svg height="50" width="400">
    <polyline points="0,0 400,0 400,50 70,50 0,0" />
  </svg>
  <ul>
    <li><a href="#">Projects</a>
    </li>
    <li><a href="#">About</a>
    </li>
    <li><a href="#">Contact</a>
    </li>
  </ul>
</div>

<a href="#">Clickable</a>  

Вот что я хочу, чтобы это произошло в окне 1200px:
введите описание изображения здесь

Окно размером менее 1200 пикселей:

введите описание изображения здесь

Ответ №1:

рассматривали ли вы возможность использования запросов @media для разных макетов в зависимости от размера вашего экрана? см. http://www.w3schools.com/cssref/css3_pr_mediaquery.asp

Возможно, этот css-код может решить вашу проблему

 @media only screen and (min-width: 1201px) {
    #navigation {
        width:80%;
    }

@media only screen and (max-width: 1200px) {
    #navigation{
        width:100%;
    }
  

Комментарии:

1. Проблема с процентами заключается в том, что она не остановится на максимуме 1200 пикселей, каким бы ни был результат 80% пользователей. Мой сайт имеет ширину 1200 пикселей, поэтому я бы хотел, чтобы панель навигации останавливалась на 1200px.

Ответ №2:

clickable Ссылка не кликабельна, потому что она z-index находится ниже #navigations .
Чтобы исправить это, вы можете использовать следующий стиль (я использую класс .clickable в этом примере).
Кроме того, для правильного центрирования на экранах шириной более 1200 пикселей вы можете добавить еще немного позиционирования, чтобы #navigation правильно его центрировать.

 #navigation {
  position: fixed;
  max-width: 1200px;
  width: 100%;
  z-index: 0;
  
  /* Center #navigation (dont forget vendor prefixes for transform)*/
  left: 50%;
  transform: translate3d(-50%, 0, 0);
}
#navigation svg {
  float: right;
}
#navigation svg polyline {
  fill: #F7F7F7;
  stroke: #B9D7D9;
  stroke-width: 2;
}
#navigation ul {
  position: absolute;
  top: 3px;
  right: 0.8rem;
  list-style-type: none;
  margin: 0;
  padding: 0;
  background-color: #F7F7F7;
}
#navigation li {
  float: left;
}

.clickable{
  display: inline-block;
  position: relative;
  z-index: 1;
}  
 <div id="navigation">
  <svg height="50" width="400">
    <polyline points="0,0 400,0 400,50 70,50 0,0" />
  </svg>
  <ul>
    <li><a href="#">Projects</a>
    </li>
    <li><a href="#">About</a>
    </li>
    <li><a href="#">Contact</a>
    </li>
  </ul>
</div>

<a href="#" class="clickable">Clickable</a>  

Комментарии:

1. Это не решение, это сделает ссылку доступной для просмотра, но остальная часть моего сайта будет видна через панель навигации, что не имеет особого смысла.

Ответ №3:

Мое решение этой проблемы. Поскольку моя максимальная ширина составляет 1200 пикселей, а ширина навигации — 400 пикселей, мне нужно переместить ее вправо на 800 пикселей.

Если экран шире 1200 пикселей, я нажимаю панель навигации на 800 пикселей вправо, а если экран меньше 1200 пикселей вправо: 0, что означает, что панель навигации будет прикреплена к браузеру.

 #navigation{
    position:fixed;
    z-index: 0;
    right: 0;
}

@media only screen and (min-width: 1200px) {
    #navigation{
        margin-left:800px!important;
        right: initial;
    }
}