#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. Это то, чего вы хотите достичь?