IE7 Dropdown
Как упомянул Sotiris, самым простым решением для IE7 было бы дать ul#menu > li > ul
фиксированную ширину. Это приведет к тому, что дочерние элементы <li>
и <a>
будут правильно принимать 100% их родительской ширины.
В настоящее время в IE7 происходит то, что ширина выпадающего меню определяется длиной самого длинного дочернего элемента из-за свойства white-space: nowrap
. Тогда IE7 неправильно применяет это к выпадающему списку <ul>
, который вместо этого берет его ширину из пункта меню верхнего уровня (104 пикселя в вашем случае).
Если вы все еще хотите сохранить меню динамической ширины, вы можете исправить это в IE7 с помощью фрагмента jQuery, который просматривает все ваши ссылки при загрузке, находит самую широкую и устанавливает для родительского элемента <ul>
эту ширину. Он должен быть запущен в вашем $(window).load
обработчике событий, сразу после того, как вы установите все ul#menu > li ul
для отображения: block:
// Nodig om de width te kunnen raadplegen
$("ul#menu > li ul").css("display", "block");
// Loop through all dropdowns and find widest child link in each
$('ul.children').each(function(){
// Find widest link in each submenu
var widest = 0;
$(this).children('li').each(function(){
if($(this).width() > widest)
widest = $(this).width();
});
// Set submenu width to widest child link
if(widest != 0)
$(this).width(widest);
});
Чтобы исправить центрированные элементы, вам также нужно удалить text-align: center
из этого правила:
ul#menu > li{
background: url(img/menuitem.png) left top;
display: block;
float: left;
height: 36px;
margin-right: 1px;
position: relative;
width: 104px;
}
Наконец, вам нужно убедиться, что флаг hasLayout правильно установлен в ваших раскрывающихся ссылках. Вы можете сделать это, установив zoom: 1
в следующем правиле:
ul#menu > li > a, ul#menu > li > ul a {
zoom: 1;
display: block;
text-decoration: none;
white-space: nowrap;
}
Индикатор подменю Firefox 3.5
Это проще исправить. Добавьте объявление ul#menu > li > ul > li a
и измените правило span.sf-sub-indicator
следующим образом:
/* Makes the link a coordinate map for span.sf-ub-indicator */
ul#menu > li > ul > li a {
position: relative;
padding-right: 10px;
}
ul#menu > li > ul > li a > span.sf-sub-indicator {
position: absolute;
top: 0;
right: 0;
}
Это абсолютно позиционирует индикатор справа от вашей ссылки. Обратите внимание, что вам нужно применить это исправление для IE7, иначе ваши подменю будут сдвинуты на одну ссылку слишком далеко.