Добрый вечер, у меня проблемы с моим выпадающим меню.
потому что я не знаю, как объяснить свою проблему на понятном английском языке, я начну с моего кода, чтобы вы могли видеть, о чем я говорю. (Он не отображается на 100% правильно на JSFiddle, но это не проблема, важные части есть)
Моя проблема заключается в том, что последнее выпадающее меню из меню "Убер Uns" вызывает пробелы в правой части сайта, если вы масштабируете браузер до меньшей ширины, чем .container Width +.subnav Width
Я пытаюсь исправить это в течение нескольких часов:/Единственные два решения, которые работают (но оба они не очень хорошие, и я не могу их использовать), используют display: none and inline
но я потеряю переходы или используя right: 0
вместо left: 0
но мой макет испорчен, потому что это выглядит не совсем хорошо.
Я был бы так благодарен, если бы кто-то помог мне решить эту проблему.
заранее спасибо
Хорошо, я думаю, что единственный способ решить это - это когда последний выпадающий список остается левым, а не правильным. Мне это не нравится, но все в порядке. Я использую mediaqueries, так что меню остается влево, если экран недостаточно большой.
сначала добавьте класс в последний пункт меню
$('.mainnav > li').last().addClass('last-menu-item');
и здесь css
@media only screen and (max-width:1412px) {
li.last-menu-item:hover ul.subnav {
right: 0 !important;
left: auto !important;
}
li.last-menu-item > ul.subnav {
right: 10px !important;
left: auto !important;
}
!important
экономно. Вам не нужно использовать их, если ваш селектор более конкретен или появляется позже в CSS. Таким образом, если вы поместите объявление :hover
последним, оно переопределит не- :hover
. Кроме того, li.last-menu-item > ul.subnav
будет переопределять li > ul.subnav
. Я также нашел , через экспериментирование , что установка left
на initial
выполняется лучше , чем auto
. Итак, ответ, который вы представили здесь, в значительной степени мой ответ. : PI потратил изрядное количество работы, чтобы помочь вам, пожалуйста, не принимайте ваш собственный ответ;)
Это устраняет проблему с интервалом, хотя теперь вам нужно будет отрегулировать подменю, чтобы вылететь влево, а не вправо. Но неважно. Я сделал немного, чтобы исправить это для вас, так что вы на полпути.
Проблема в том, что браузер по-прежнему позволяет пространство для "скрытых" элементов. Если вы хотите удалить его из космических вычислений, вам нужно использовать display:none
li.last-menu-item > ul.subnav { display: none; }
li.last-menu-item:hover > ul.subnav { display: block; width: auto; }
Альтернативное решение, так как я видел, что вам не нравится display:none
. Я думаю, что это решение немного более элегантно:
ul.mainnav > li.last-menu-item ul.subnav {
left: initial;
right: 0px;
}
display: none
. Хорошо, тогда вам нужно установить его влево и переместить, когда вы будете к этому готовы. Дай мне посмотреть, что я могу быстро приготовить.
Ответ отредактирован для соответствия ревизий OP:
ul.mainnav {
+ width: 100%;
}
//изменено для работы над jsfiddle
div#Logo {
background: url(http://placehold.it/280x155) no-repeat left;
}
Скрипт: http://jsfiddle.net/8ktYy/14/
display:hide
(см. MDN для справки developer.mozilla.org/en-US/docs/Web/CSS/display ). Кроме того, скрипка, кажется, работает для меня. Вы имеете в виду пространство, которое занимает широкое меню в конце?