Вертикальная строка меню Spry — ширина в IE

Я работаю над веб-сайтом в Dreamweaver и немного новичок в некоторых аспектах веб-дизайна.

У меня есть вертикальная панель меню Spry, расположенная вдоль левой стороны моей страницы, которая отлично работает в большинстве браузеров, кроме старого доброго Internet Explorer. В большинстве браузеров элементы в строке меню будут соответствовать ширине строки меню, но в Internet Explorer элементы обрезаются до размера слова, которое они содержат. В некоторых случаях они обрезаются настолько, что два пункта меню оказываются на одной строке. То же самое происходит и с подменю.

Вот сайт: http://www.lakeathleticboosterclub.com/ Попробуйте сами в случае я не очень хорошо описал проблему, и вот CSS, с которым я работаю.

@charset "UTF-8";

/* SpryMenuBarVertical.css - version 0.6 - Spry Pre-Release 1.6.1 */

/* Copyright (c) 2006. Adobe Systems Incorporated. All rights reserved. */

/*******************************************************************************

 LAYOUT INFORMATION: describes box model, positioning, z-order

 *******************************************************************************/

/* The outermost container of the Menu Bar, a fixed width box with no margin 
or padding */
ul.MenuBarVertical
{
    margin: 0;
    padding: 0;
    list-style-type: none;
    font-size: 100%;
    cursor: default;
    width: auto;
}
/* Set the active Menu Bar with this class, currently setting z-index to 
accomodate IE rendering bug: http://therealcrisp.xs4all.nl/meuk/IE-zindexbug.html 
*/
ul.MenuBarActive
{
z-index: 1000;
}
/* Menu item containers, position children relative to this container and are 
same fixed width as parent */
ul.MenuBarVertical li
{
margin: 0;
padding: 0;
list-style-type: none;
font-size: 100%;
position: relative;
text-align: left;
cursor: pointer;
width: auto;
}
/* Submenus should appear slightly overlapping to the right (95%) and 
up (-5%) with a higher z-index, but they are initially off the left side 
of the screen (-1000em) */
ul.MenuBarVertical ul
{
margin: -5% 0 0 95%;
padding: 0;
list-style-type: none;
font-size: 100%;
position: absolute;
z-index: 1020;
cursor: default;
left: -1000em;
top: 0;
width: auto;
}
/* Submenu that is showing with class designation MenuBarSubmenuVisible, 
we set left to 0 so it comes onto the screen */
ul.MenuBarVertical ul.MenuBarSubmenuVisible
{
left: 0;
}
/* Menu item containers are same fixed width as parent */
ul.MenuBarVertical ul li
{
}

/*******************************************************************************

DESIGN INFORMATION: describes color scheme, borders, fonts

*******************************************************************************/

/* Outermost menu container has borders on all sides */
ul.MenuBarVertical
{
border: 1px solid #CCC;
}
/* Submenu containers have borders on all sides */
ul.MenuBarVertical ul
{
border: 1px solid #CCC;
}
/* Menu items are a light gray block with padding and no text decoration */
ul.MenuBarVertical a
{
display: block;
cursor: pointer;
background-color: #EEE;
padding: 0.5em 0.75em;
color: #333;
text-decoration: none;
}
/* Menu items that have mouse over or focus have a blue background and white text */
ul.MenuBarVertical a:hover, ul.MenuBarVertical a:focus
{
background-color: #33C;
color: #FFF;
}
/* Menu items that are open with submenus are set to MenuBarItemHover
with a blue background and white text */
ul.MenuBarVertical a.MenuBarItemHover, ul.MenuBarVertical a.MenuBarItemSubmenuHover, ul.MenuBarVertical a.MenuBarSubmenuVisible
{
background-color: #33C;
color: #FFF;
}

/*******************************************************************************

 SUBMENU INDICATION: styles if there is a submenu under a given menu item

 *******************************************************************************/

/* Menu items that have a submenu have the class designation MenuBarItemSubmenu 
and are set to use a background image positioned on the far left (95%) and 
centered vertically (50%) */
ul.MenuBarVertical a.MenuBarItemSubmenu
{
background-image: url(SpryMenuBarRight.gif);
background-repeat: no-repeat;
background-position: 95% 50%;
}

/* Menu items that are open with submenus have the class designation
MenuBarItemSubmenuHover and are set to use a "hover" background image 
positioned on the far left (95%) and centered vertically (50%) */
ul.MenuBarVertical a.MenuBarItemSubmenuHover
{
background-image: url(SpryMenuBarRightHover.gif);
background-repeat: no-repeat;
background-position: 95% 50%;
}

/*******************************************************************************

 BROWSER HACKS: the hacks below should not be changed unless you are an expert

 *******************************************************************************/

/* HACK FOR IE: to make sure the sub menus show above form controls, we 
underlay each submenu with an iframe */
ul.MenuBarVertical iframe
{
position: absolute;
z-index: 1010;
filter:alpha(opacity:0.1);
}
/* HACK FOR IE: to stabilize appearance of menu items; the slash in float is 
to keep IE 5.0 from parsing */
@media screen, projection
{
ul.MenuBarVertical li.MenuBarItemIE
{
    display: inline;
    f\loat: left;
    background: #FFF;
}
}

Любая помощь будет принята с благодарностью.


person Ross Hays    schedule 13.09.2011    source источник
comment
Привет. Моя первая догадка: добавить display: block; или даже width: 100% к ul.MenuBarVertical li {...} У меня такое чувство, что эти элементы разрушаются.   -  person Steve Adams    schedule 26.11.2011
comment
Это сработало очень хорошо! Я добавил его в подменю ul.MenuBarVertical ul, и он отлично работает, как вы можете видеть на сайте. Одна вещь, хотя, более длинные слова по-прежнему переносятся, чтобы сделать вторую строку в одном подменю. Есть идеи?   -  person Ross Hays    schedule 26.11.2011
comment
это сложный вызов. Линии обрываются рано? Всегда есть возможность предотвратить перенос текста (white-space: nowrap; в ли), но это может вызвать проблемы, когда вы действительно хотите, чтобы текст переносился. Я полагаю, что если вы не ожидаете, что вам понадобится упаковка, nowrap может быть простым решением на данный момент. РЕДАКТИРОВАТЬ: я только что проверил в IE. Я вижу вашу проблему. Я опубликую решение на мгновение!   -  person Steve Adams    schedule 26.11.2011


Ответы (1)


Итак, кажется, вам нужно установить ul.MenuBarVertical так, чтобы он имел ширину, которая заполнит его контейнер:

ul.MenuBarVertical
{
    margin: 0;
    padding: 0;
    list-style-type: none;
    font-size: 100%;
    cursor: default;
    width: 100%;
}

Однако боковая панель также не имеет ширины, поэтому теперь нам нужно добавить:

.sidebar1 {
    float: left;
    width: 218px; <-- This is changed
    background: #151B8D;
    padding-bottom: 10px;
    color: #fff;
}

И тогда это все испортит, пока мы не изменим это:

.content {
    padding: 10px 0;
    width: 790px; <-- Explicit width
    float: right; <-- Should make things a little more predictable
}

Поскольку на самом деле у него нет явной ширины, визуализируемый размер вашей боковой панели полностью зависит от того, как браузер решает изменить размер всего. В IE это просто не работает. Использование этого метода должно помочь!

Кроме того, для потомков, вот оригинальное исправление из моего комментария:

добавить дисплей: блок; или даже ширина: 100% до ul.MenuBarVertical li {...}

Если это вызывает странное поведение в основном контейнере, вероятно, это связано с проблемами упаковки содержимого, возникающими из-за использования плавающих элементов. Вы можете решить эту проблему, установив «overflow: hidden» в .container. Он заставляет браузеры, включая IE, распознавать размеры всплывающего содержимого и соответствующим образом оборачивать его.

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

person Steve Adams    schedule 26.11.2011
comment
Я попробую это завтра, когда вернусь к своему рабочему компьютеру, и дам вам знать. Заранее спасибо. - person Ross Hays; 26.11.2011