2015-04-27 3 views
1

У меня есть двухстрочное меню только для CSS, которое расширяется до трех строк при каждом нажатии на одно из параметров подменю в первой строке. Это отлично подходит для самых дальних левых и дальнейших правильных вариантов, но любой из них в середине полностью закручивает его и сдвигает все остальное с пути и до другой линии.Меню с двумя линиями CSS Неограниченное расширение

Правильное поведение: enter image description here

Неправильное поведение: enter image description here

Вот CSS:

#cssmenu ul { 
    margin: 0; 
    padding: 7px 6px 0; 
    background: #74c141 url(overlay.png) repeat-x 0 -110px; 
    line-height: 100%; 
    font-family: 'Oxygen', sans-serif; 
    -webkit-border-radius: 5px; 
    -moz-border-radius: 5px; 
    -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.4); 
    -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.4); 
} 
#cssmenu li { 
    margin: 0 5px; 
    padding: 0 0 8px; 
    float: left; 
    position: relative; 
    list-style: none; 
} 
#cssmenu a, 
#cssmenu a:link { 
    font-weight: bold; 
    font-size: 13px; 
    color: #e7e5e5; 
    text-decoration: none; 
    display: block; 
    padding: 8px 20px; 
    margin: 0; 
    -webkit-border-radius: 5px; 
    -moz-border-radius: 5px; 
} 
#cssmenu a:hover { 
    background: #000; 
    color: #fff; 
} 
#cssmenu .active a, 
#cssmenu li:hover > a { 
    background: #90ce67 url(overlay.png) repeat-x 0 -40px; 
    color: #444; 
    border-top: solid 1px #f8f8f8; 
} 
#cssmenu ul ul li:hover a, 
#cssmenu li:hover li a { 
    background: none; 
    border: none; 
    color: #666; 
    -webkit-box-shadow: none; 
    -moz-box-shadow: none; 
} 
#cssmenu ul ul a:hover { 
    background: #74c141 url(overlay.png) repeat-x 0 -100px !important; 
    color: #fff !important; 
    -webkit-border-radius: 5px; 
    -moz-border-radius: 5px; 
} 
#cssmenu li:hover > ul { 
    display: block; 
} 
#cssmenu ul ul { 
    z-index: 1000; 
    display: none; 
    margin: 0; 
    padding: 0; 
    width: 250px; 
    position: absolute; 
    top: 40px; 
    left: 0; 
    background: #ffffff url(overlay.png) repeat-x 0 0; 
    border: solid 1px #b4b4b4; 
    -webkit-border-radius: 5px; 
    -moz-border-radius: 5px; 
} 
#cssmenu ul ul li { 
    float: none; 
    margin: 0; 
    padding: 3px; 
} 
#cssmenu ul ul a, 
#cssmenu ul ul a:link { 
    font-weight: normal; 
    font-size: 12px; 
} 
#cssmenu ul:after { 
    content: "."; 
    display: block; 
    clear: both; 
    visibility: hidden; 
    line-height: 0; 
    height: 0; 
} 
* html #cssmenu ul { 
    height: 1%; 
} 

Я, очевидно, хотят элементы меню, чтобы оставаться на месте и не двигаться, когда парил над или нажмите. Спасибо, что посмотрели !!!

Cheers, Brian

ответ

2

Я считаю, что это может быть потому, что элементы в списке меняются ширину.

Помните, что следующие атрибуты настроить общую ширину ваших элементов:

  • ширина
  • обивки
  • запаса
  • границы

атрибуты должны быть статичными. Я, например, вижу в следующих селекторах, что значение границы изменяется от 1px до 0px (из-за значения none во втором правиле).

#cssmenu .active a, 
#cssmenu li:hover > a { 
    background: #90ce67 url(overlay.png) repeat-x 0 -40px; 
    color: #444; 
    border-top: solid 1px #f8f8f8; 
} 
#cssmenu ul ul li:hover a, 
#cssmenu li:hover li a { 
    background: none; 
    border: none; /* look at this maybe set it as 1px, with a transparent color value */ 
    color: #666; 
    -webkit-box-shadow: none; 
    -moz-box-shadow: none; 
} 

Было бы полезно, если бы вы могли разместить html тоже.

-1

Блестящий, спасибо jonhurlock!

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

Как правило, я стараюсь писать как разреженный код, удаляя каждую строку, которую я могу, и тестирую, если все еще работает. Не сделал этого в этом меню!

Еще раз спасибо, Brian

+0

Это должно быть комментарий, а не ответ. – twsaef

Смежные вопросы