Корректировка стандартного горизонтального меню
Стандартное меню построено так, что при наведении на пункт выпадающее подменю располагается на странице в XX пикселей от верха. Соответственно, если вставить выше меню что-то — то выпадающее подменю, так и располагается на том же уровне, относительно страницы, а не относительно пункта меню.
Пробовал править, меню разлетается (т е. не корректно отображается в ряде браузеров).
Как грамотно исправить стандартный код меню, чтобы выпадающее подменю всегда было на месте?
Добавьте новую позицию в шаблон над или под, не нужно будет ничего исправлять…
Если саму позицию topmenu сместить выше или ниже, то выпадающий список меню отображается на прежнем месте.
Потомучто в css для выпадающего ul стоит
position: absolute; top: 110px;
Если меню будет в другом месте то выпадающий список согласно css
absolute —
Указывает, что элемент абсолютно позиционирован, при этом другие элементы отображаются на веб-странице словно абсолютно позиционированного элемента и нет. Положение элемента задается свойствами left, top, right и bottom, также на положение влияет значение свойства position родительского элемента. Так, если у родителя значение position установлено как static или родителя нет, то отсчет координат ведется от края окна браузера. Если у родителя значение position задано как fixed, relative или absolute, то отсчет координат ведется от края родительского элемента.
Попробую перевести на человеческийabsolute —
Указывает, что элемент абсолютно позиционирован, при этом другие элементы отображаются на веб-странице словно абсолютно позиционированного элемента и нет. Положение элемента задается свойствами left, top, right и bottom, также на положение влияет значение свойства position родительского элемента. Так, если у родителя значение position установлено как static или родителя нет, то отсчет координат ведется от края окна браузера. Если у родителя значение position задано как fixed, relative или absolute, то отсчет координат ведется от края родительского элемента.
kreator, • Mike •, говорит вам, чтобы вы назначили свойство position:relative элементу li вашего меню, да задали выпадающему ul свойство top равное высоте заданой для li (лучше, минус 1-2 пикселя).
Сейчас у меня меню вот:
/******************************* Верхнее меню *********************************/ #topmenu{ overflow: hidden; margin-top: 15px; margin-bottom: 10px; background: url(../images/menubar.jpg) repeat-x; border-radius: 0 0 8px 8px; -moz-border-radius: 0 0 8px 8px; width: 940px; clear: both; } #topmenu .menu{ list-style:none; margin:0; padding:0; } #topmenu .menu li a{ text-decoration:none; } #topmenu .menu li{ list-style: none; margin: 0; padding: 0; height: 35px; line-height: 35px; display: inline-block; zoom: 1; font-size: 12px; text-transform: uppercase; font-weight: bold; } #topmenu .menu li.selected{ background:url(../images/menubg.jpg) repeat-x left top #375E93; } #topmenu .menu li.selected a.selected{ color:#fff; text-decoration:none; text-shadow:0 1px 0 #000; } #topmenu .menu li a:hover, #topmenu .menu li a.hover{ background:url(../images/menubg-hover.jpg) repeat-x center top #375E93; color:#000 !important; text-shadow:0 1px 0px #FFF !important; } #topmenu .menu li a{ padding: 0px 10px; color: #1F3451; height: 35px; line-height: 35px; display: inline-block; } #topmenu ul li ul { display:none; position: absolute; top: 110px; width: 200px; background: #E9E9E9; color: #000; padding:0px; z-index:1000; box-shadow:1px 1px 3px #000; -moz-box-shadow:1px 1px 3px #000; } #topmenu ul li ul li ul { display:none; position: relative; margin-top:-155px; left:200px; width: 200px; background: #E9E9E9; color: #000; padding:0px; z-index:1000; box-shadow:1px 1px 3px #000; -moz-box-shadow:1px 1px 3px #000; } #topmenu ul li ul li, #topmenu ul li ul li a{ display:block; width:100%; } #topmenu ul li ul li a{ padding:0px !important; text-decoration:none; } #topmenu ul li ul li a span{ margin:0px 10px; padding:0px; } #topmenu ul li ul li a.selected span{ text-decoration:none; } .pathway{ padding:0 20px 10px; }
/******************************* Верхнее меню *********************************/ #topmenu{ margin-top:15px; margin-bottom:10px; background:url(../images/menubar.jpg) repeat-x center bottom; border-radius:8px; -moz-border-radius:8px; box-shadow: 0 0 5px #000; -moz-box-shadow: 0 0 5px #000; width:940px; clear: both; display:table; table-layout: fixed; } #topmenu .menu{ list-style:none; margin:0; padding:0; position:relative; } #topmenu .menu li a{ text-decoration:none; } #topmenu .menu li{ list-style:none; margin:0; padding:0; height:40px; line-height:40px; display:block; zoom: 1; font-size:18px; float:left; } #topmenu .menu li.selected{ background:url(../images/menubg.jpg) repeat-x left top #375E93; } #topmenu .menu li.selected a.selected{ color:#fff; text-decoration:none; text-shadow:0 1px 0 #000; } #topmenu .menu li a:hover, #topmenu .menu li a.hover{ background:url(../images/menubg-hover.jpg) repeat-x center top #375E93; color:#000 !important; text-shadow:0 1px 0px #FFF !important; } #topmenu .menu li a{ padding:0px 10px; color:#1F3451; height:40px; line-height:40px; display:block; } #topmenu ul li ul { display:none; position: absolute; top: 40px; width: 200px; background: #E9E9E9; color: #000; padding:0px; z-index:1000; box-shadow:1px 1px 3px #000; -moz-box-shadow:1px 1px 3px #000; } #topmenu ul li ul li ul { display:none; top:0; left:200px; width: 200px; background: #E9E9E9; color: #000; padding:0px; z-index:1000; box-shadow:1px 1px 3px #000; -moz-box-shadow:1px 1px 3px #000; } #topmenu ul li ul li, #topmenu ul li ul li a{ display:block; width:100%; position:relative; } #topmenu ul li ul li a{ padding:0px !important; text-decoration:none; } #topmenu ul li ul li a span{ margin:0px 10px; padding:0px; } #topmenu ul li ul li a.selected span{ text-decoration:none; } это из 1378 тот же «кусок»