Проблема с выпадающим списком многоуровневого мега-меню во всю ширину

#html #css #dropdown #megamenu #full-width

#HTML #css #выпадающий #megamenu #во всю ширину

Вопрос:

Привет, я пытаюсь создать многоуровневое мега-меню во всю ширину, но содержимое внутри него имеет максимальную ширину 1240 пикселей. Я могу сделать содержимое максимальной ширины, но изо всех сил пытаюсь сделать его полной шириной. Попытка воспроизвести что-то похожее на https://www.boots.com /

Вот что у меня есть на данный момент, любая помощь будет оценена

 .newNavDesktop {
  z-index: 1;
  background: linear-gradient(302.5deg,#294a77 13.9%,#000338);
  width: 100vw;
}

.newNavDesktopContent {
  display: flex;
  flex-flow: row wrap;
  position: relative;
}

.nav-menu {
  width: 100%;
}

.nav-menu,.nav-menu ul,.nav-menu li,.nav-menu a {
  margin: 0;
  padding: 0;
  line-height: normal;
  list-style: none;
  display: block;
}

.nav-menu ul {
  opacity: 0;
  position: absolute;
  top: 100%;
  left: -9999px;
  z-index: 999;
  -webkit-transition: opacity .3s;
  transition: opacity .3s;
  background: grey;
}

.nav-menu li:hover > ul, .nav-menu li:hover > .newWrapContainer .newNavWrap {
  left: 0;
  opacity: 1;
  z-index: 1000;
}

.nav-menu ul li:hover >  ul {
  top: 0;
  left: 100%;
}

.nav-menu li {
  cursor: defau<
  float: left;
  white-space: nowrap;
  width: 12em;
}

.nav-menu ul li {
  float: none;
}

.nav-menu a {
  padding: 0 10px;
  color: #5BC0DE;
  font-weight: normal;
  font-size: 14px;
  line-height: 40px;
  text-decoration: none;
}

.nav-menu > li > .nav-active {
}

.nav-menu a:hover,.nav-menu a:focus,.nav-menu li:hover a {
  text-decoration: underline;
}

.nav-menu li li a,.nav-menu li:hover li a {
  padding: 8px 10px;
  color: black;
  font-size: 12px;
  line-height: normal;
  text-decoration: none;
}

.nav-menu li:hover li a:hover,.nav-menu li:hover li a:focus {
  text-decoration: underline;
}

.nav-menu li:hover li:hover a:hover {
  text-decoration: underline;
}

.newWrapContainer .newNavWrap {
  background: grey;
  max-width: 1240px;
  margin: 0 auto;
}

.newWrapContainer {
  width: 100vw;
} 
 <section class="newNavDesktop"><section class="newNavDesktopContent">
      <ul class="nav-menu nav-center">
        <li><a href="#" class="nav-active">Shop By</a>
          <div class="newWrapContainer">
          <ul class="newNavWrap">
            <li><a href="#">Nav Cat 1</a>
              <ul>
                <li><a href="#">Sub Sub Nav Link</a></li>
                <li><a href="#">Sub Sub Nav Link</a></li>
                <li><a href="#">Sub Sub Nav Link</a></li>
              </ul>
            </li>
            <li><a href="#">Nav Cat 1</a>
              <ul>
                <li><a href="#">Sub Sub Nav Link</a></li>
                <li><a href="#">Sub Sub Nav Link</a></li>
                <li><a href="#">Sub Sub Nav Link</a></li>
              </ul>
            </li>
            <li><a href="#">Nav Cat 1</a>
              <ul>
                <li><a href="#">Sub Sub Nav Link</a></li>
                <li><a href="#">Sub Sub Nav Link</a></li>
                <li><a href="#">Sub Sub Nav Link</a></li>
              </ul>
            </li>
            <li><a href="#">Nav Cat 1</a>
              <ul>
                <li><a href="#">Sub Sub Nav Link</a></li>
                <li><a href="#">Sub Sub Nav Link</a></li>
                <li><a href="#">Sub Sub Nav Link</a></li>
              </ul>
            </li>
          </ul>
          </div>
        </li>
        <li><a href="#" class="nav-active">Shop By Category</a>
<div class="newWrapContainer">
          <ul class="newNavWrap">
            <li><a href="#">Nav Cat 2</a>
              <ul>
                <li><a href="#">Sub Sub Nav Link</a></li>
                <li><a href="#">Sub Sub Nav Link</a></li>
                <li><a href="#">Sub Sub Nav Link</a></li>
              </ul>
            </li>
            <li><a href="#">Nav Cat 2</a>
              <ul>
                <li><a href="#">Sub Sub Nav Link</a></li>
                <li><a href="#">Sub Sub Nav Link</a></li>
                <li><a href="#">Sub Sub Nav Link</a></li>
              </ul>
            </li>
            <li><a href="#">Nav Cat 2</a>
              <ul>
                <li><a href="#">Sub Sub Nav Link</a></li>
                <li><a href="#">Sub Sub Nav Link</a></li>
                <li><a href="#">Sub Sub Nav Link</a></li>
              </ul>
            </li>
            <li><a href="#">Nav Cat 2</a>
              <ul>
                <li><a href="#">Sub Sub Nav Link</a></li>
                <li><a href="#">Sub Sub Nav Link</a></li>
                <li><a href="#">Sub Sub Nav Link</a></li>
              </ul>
            </li>
            <li><a href="#">Nav Cat 2</a>
              <ul>
                <li><a href="#">Sub Sub Nav Link</a></li>
                <li><a href="#">Sub Sub Nav Link</a></li>
                <li><a href="#">Sub Sub Nav Link</a></li>
              </ul>
            </li>
          </ul>
</div>
        </li>
        <li><a href="#" class="nav-active">Shop By Brand</a>
<div class="newWrapContainer">
          <ul class="newNavWrap">
            <li><a href="#">Sub Nav Link</a>
              <ul>
                <li><a href="#">Sub Sub Nav Link</a>
                  <ul>
                    <li><a href="#">Sub Sub Nav Link</a></li>
                    <li><a href="#">Sub Sub Nav Link</a></li>
                    <li><a href="#">Sub Sub Nav Link</a></li>
                  </ul>
                </li>
                <li><a href="#">Sub Sub Nav Link</a>
                  <ul>
                    <li><a href="#">Sub Sub Nav Link</a></li>
                    <li><a href="#">Sub Sub Nav Link</a></li>
                    <li><a href="#">Sub Sub Nav Link</a></li>
                  </ul>
                </li>
                <li><a href="#">Sub Sub Nav Link</a></li>
              </ul>
            </li>
            <li><a href="#">Sub Nav Link</a>
              <ul>
                <li><a href="#">Sub Sub Nav Link</a></li>
                <li><a href="#">Sub Sub Nav Link</a></li>
                <li><a href="#">Sub Sub Nav Link</a></li>
              </ul>
            </li>
            <li><a href="#">Sub Nav Link</a>
              <ul>
                <li><a href="#">Sub Sub Nav Link</a></li>
                <li><a href="#">Sub Sub Nav Link</a></li>
                <li><a href="#">Sub Sub Nav Link</a></li>
              </ul>
            </li>
            <li><a href="#">Sub Nav Link</a>
              <ul>
                <li><a href="#">Sub Sub Nav Link</a></li>
                <li><a href="#">Sub Sub Nav Link</a></li>
                <li><a href="#">Sub Sub Nav Link</a></li>
              </ul>
            </li>
          </ul>
</div>
        </li>
      </ul>
    </section></section> 

Ответ №1:

Возьмите свою оболочку ( .newNavDesktop ) для меню и примените width: 100vw с помощью CSS, что позволит ему всегда охватывать всю ширину области просмотра. Примените то же width: 100vw самое к выпадающему элементу. Здесь я бы представил div вокруг выпадающего списка, если на то пошло.

Затем сам ul может иметь max-width: 1024px . Таким образом, выпадающий список может иметь серый фон и занимать весь экран, в то время как список занимает не более 1024 пикселей.

Я создал Codepen, чтобы лучше проиллюстрировать, что, по моему мнению, является решением вашего вопроса: https://codepen.io/Nice2MeatU/pen/ZEpLdbK

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

1. Привет, Марко, спасибо за ваш ответ. Но то, что я пытаюсь сделать, это сделать выпадающий список при наведении курсора на полную ширину, но с содержанием максимальной ширины 1240 пикселей, т.е. отображаемым серым выпадающим списком. @Marco Hengstenberg

2. Хорошо, тогда я неправильно понял ваш вопрос. Тем не менее, ответ остается в силе. Сама навигация должна быть полной ширины, выпадающий список также должен быть полной ширины, и тогда <ul> может иметь максимальную ширину. Я соответствующим образом скорректирую свой ответ.

3. Я внес предложения, о которых вы упомянули, но они все еще не работают или, возможно, я неправильно их реализовал. Я внес изменения в свой код выше, если вы могли бы взглянуть.

4. Хорошо. Вопрос: вы хотите, чтобы выпадающие списки располагались под соответствующими триггерами (ссылками, на которые нужно навести курсор)?

5. Я обновил свой Codepen. Это то, чего вы хотите достичь?