Spry Drop Down Menu Shift

Hello I am having trouble with my spry drop down menu shifting to the right when I hover over the navigation bar. It is only the submenu’s that shift, not the actually nav bar itself. The error is only visible in IE6 & IE7. I do not see the problem at all on Firefox (windows/mac), Safari (windows/mac) or IE8.

Note: This is the dreamweaver spry drop down menu.

If someone can help, that will be greatly appreciated.

Here’s the site: http://eagleridge.blueicegraphix.com

Hopefully its not a javascript issue, as I am not too familiar with the language.

CSS Code:

@charset "UTF-8";

/* SpryMenuBarHorizontal.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, an auto width box with no margin or padding */
ul.MenuBarHorizontal
{
	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 a fixed width */
ul.MenuBarHorizontal li
{
	margin: 0;
	padding: 0;
	list-style-type: none;
	font-size: 10pt;
	position: relative;
	cursor: pointer;
	width: 9.4em;
	float: left;
	font-family: Calibri;
	letter-spacing: 0.01em;
	background-image: url(../images/menuGradient.gif);
	background-repeat: repeat-x;
}
/* Submenus should appear below their parent (top: 0) with a higher z-index, but they are initially off the left side of the screen (-1000em) */
ul.MenuBarHorizontal ul
{
	margin: 0;
	padding: 0;
	list-style-type: none;
	font-size: 100%;
	z-index: 1020;
	cursor: default;
	width: 10.5em;
	position: absolute;
	left: -1000em;
	background-image: url(../images/menuGradient.gif);
	background-repeat: repeat-x;
}
/* Submenu that is showing with class designation MenuBarSubmenuVisible, we set left to auto so it comes onto the screen below its parent menu item */
ul.MenuBarHorizontal ul.MenuBarSubmenuVisible
{
	left: auto;
	width: 9.4em;
}
/* Menu item containers are same fixed width as parent */
ul.MenuBarHorizontal ul li
{
	width: 10.5em;
	background-image: url(../images/menuGradient.gif);
	background-repeat: repeat-x;
	position: relative;
}
/* Submenus should appear slightly overlapping to the right (95%) and up (-5%) */
ul.MenuBarHorizontal ul ul
{
	position: absolute;
	margin-top: -5%;
	margin-right: 0;
	margin-bottom: 0;
	margin-left: 95%;
}
/* Submenu that is showing with class designation MenuBarSubmenuVisible, we set left to 0 so it comes onto the screen */
ul.MenuBarHorizontal ul.MenuBarSubmenuVisible ul.MenuBarSubmenuVisible
{
	left: auto;
	top: 0;
}

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

 DESIGN INFORMATION: describes color scheme, borders, fonts

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

/* Submenu containers have borders on all sides */
ul.MenuBarHorizontal ul
{
	border: 1px solid #CCC;
	background-image: url(../images/menuGradient.gif);
	background-repeat: repeat-x;
}
/* Menu items are a light gray block with padding and no text decoration */
ul.MenuBarHorizontal a
{
	display: block;
	cursor: pointer;
	color: #333;
	text-decoration: none;
	padding-top: 0.5em;
	padding-right: 0.25em;
	padding-bottom: 0.5em;
	padding-left: 0.25em;
	background-image: url(../images/menuGradient.gif);
	background-repeat: repeat-x;
	font-family: Calibri;
}
/* Menu items that have mouse over or focus have a blue background and white text */
ul.MenuBarHorizontal a:hover, ul.MenuBarHorizontal a:focus
{
	color: #090;
	background-image: url(../images/menuGradient.gif);
	background-repeat: repeat-x;
}
/* Menu items that are open with submenus are set to MenuBarItemHover with a blue background and white text */
ul.MenuBarHorizontal a.MenuBarItemHover, ul.MenuBarHorizontal a.MenuBarItemSubmenuHover, ul.MenuBarHorizontal a.MenuBarSubmenuVisible
{
	color: #7AA521;
	background-image: url(../images/menuGradient.gif);
	background-repeat: repeat-x;
}

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

 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.MenuBarHorizontal a.MenuBarItemSubmenu
{
	background-image: url(../images/menuGradient.gif);
	background-repeat: repeat-x;
}
/* 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.MenuBarHorizontal ul a.MenuBarItemSubmenu
{
	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.MenuBarHorizontal a.MenuBarItemSubmenuHover
{
	background-image: url(../images/menuGradient.gif);
	background-repeat: repeat-x;
}
/* 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.MenuBarHorizontal ul a.MenuBarItemSubmenuHover
{
	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.MenuBarHorizontal 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.MenuBarHorizontal li.MenuBarItemIE
	{
	display: inline;
	f\\loat: left;
	background-color: #FFF;
	}
}

No it didn’t work. :frowning:

@charset “UTF-8”;

/* SpryMenuBarHorizontal.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, an auto width box with no margin or padding /
ul.MenuBarHorizontal
{
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 a fixed width /
ul.MenuBarHorizontal li
{
margin: 0;
padding: 0;
list-style-type: none;
font-size: 10pt;
position: relative;
cursor: pointer;
width: 9.4em;
float: left;
font-family: Calibri;
letter-spacing: 0.01em;
background-image: url(…/images/menuGradient.gif);
background-repeat: repeat-x;
}
/
Submenus should appear below their parent (top: 0) with a higher z-index, but they are initially off the left side of the screen (-1000em) /
ul.MenuBarHorizontal ul
{
margin: 0;
padding: 0;
list-style-type: none;
font-size: 100%;
z-index: 1020;
cursor: default;
width: 9.2em;
position: absolute;
left: -1000em;
background-image: url(…/images/menuGradient.gif);
background-repeat: repeat-x;
}
/
Submenu that is showing with class designation MenuBarSubmenuVisible, we set left to auto so it comes onto the screen below its parent menu item /
ul.MenuBarHorizontal ul.MenuBarSubmenuVisible
{
left: auto;
width: 9.2em;
}
/
Menu item containers are same fixed width as parent /
ul.MenuBarHorizontal ul li
{
width: 9.2em;
background-image: url(…/images/menuGradient.gif);
background-repeat: repeat-x;
position: relative;
}
/
Submenus should appear slightly overlapping to the right (95%) and up (-5%) /
ul.MenuBarHorizontal ul ul
{
position: absolute;
margin-top: -5%;
margin-right: 0;
margin-bottom: 0;
margin-left: 95%;
}
/
Submenu that is showing with class designation MenuBarSubmenuVisible, we set left to 0 so it comes onto the screen */
ul.MenuBarHorizontal ul.MenuBarSubmenuVisible ul.MenuBarSubmenuVisible
{
left: 0px;
top: 0px;
}

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

DESIGN INFORMATION: describes color scheme, borders, fonts

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

/* Submenu containers have borders on all sides /
ul.MenuBarHorizontal ul
{
border: 1px solid #CCC;
background-image: url(…/images/menuGradient.gif);
background-repeat: repeat-x;
}
/
Menu items are a light gray block with padding and no text decoration /
ul.MenuBarHorizontal a
{
display: block;
cursor: pointer;
color: #333;
text-decoration: none;
padding-top: 0.5em;
padding-right: 0.25em;
padding-bottom: 0.5em;
padding-left: 0.25em;
background-image: url(…/images/menuGradient.gif);
background-repeat: repeat-x;
font-family: Calibri;
text-align: center;
}
/
Menu items that have mouse over or focus have a blue background and white text /
ul.MenuBarHorizontal a:hover, ul.MenuBarHorizontal a:focus
{
color: #090;
background-image: url(…/images/menuGradient.gif);
background-repeat: repeat-x;
}
/
Menu items that are open with submenus are set to MenuBarItemHover with a blue background and white text */
ul.MenuBarHorizontal a.MenuBarItemHover, ul.MenuBarHorizontal a.MenuBarItemSubmenuHover, ul.MenuBarHorizontal a.MenuBarSubmenuVisible
{
color: #7AA521;
background-image: url(…/images/menuGradient.gif);
background-repeat: repeat-x;
}

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

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.MenuBarHorizontal a.MenuBarItemSubmenu
{
background-image: url(…/images/menuGradient.gif);
background-repeat: repeat-x;
}
/
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.MenuBarHorizontal ul a.MenuBarItemSubmenu
{
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.MenuBarHorizontal a.MenuBarItemSubmenuHover
{
background-image: url(…/images/menuGradient.gif);
background-repeat: repeat-x;
}
/
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.MenuBarHorizontal ul a.MenuBarItemSubmenuHover
{
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.MenuBarHorizontal 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.MenuBarHorizontal li.MenuBarItemIE
{
display: inline;
f\loat: left;
background-color: #FFF;
}
}

Hi,

IE6/7 are choking on left:auto when positioning the sub UL on hover.

Use left:0; instead so they don’t have to guess where it is supposed to go. They are using text-align:center from the “a” to determine what left:auto is, that’s why the sub UL appears in the center of each parent link.

/* Submenu that is showing with class designation MenuBarSubmenuVisible, we set left to 0 so it comes onto the screen */
ul.MenuBarHorizontal ul.MenuBarSubmenuVisible ul.MenuBarSubmenuVisible
{
    [COLOR=Red]/*left: auto;*/[/COLOR]
   [COLOR=Blue] left:0;[/COLOR]
    top: 0;
}

That was the third level UL I gave you the first time (my oversight)
Do the same thing to the second level UL

/* Submenus should appear below their parent (top: 0) with a higher z-index, but they are initially off the left side of the screen (-1000em) */
[B]ul.MenuBarHorizontal ul[/B]
{
margin: 0;
padding: 0;
list-style-type: none;
font-size: 100%;
z-index: 1020;
cursor: default;
width: 9.2em;
position: absolute;
left: -1000em;
background-image: url(../images/menuGradient.gif);
background-repeat: repeat-x;
}
/* Submenu that is showing with class designation MenuBarSubmenuVisible, we set left to auto so it comes onto the screen below its parent menu item */
[B]ul.MenuBarHorizontal[/B] [B]ul.MenuBarSubmenuVisible[/B]
{
[COLOR=Red]/*left: auto;*/[/COLOR]
[COLOR=Blue]left:0;[/COLOR]
width: 9.2em;
}

@Rayzur thanks for the reply. I am going to try it now, I’ll let you know how it goes.

That’s probably best :slight_smile:

I don’t like all the long class names that it uses. I always keep them short and simple.

Reminds me of the dreamweaver layout templates too, they all suffer from float bugs in IE. You can recognize them everytime you see them, .twoColumnLeft and .twoColumnRight or something like that.

I’ve seen this very problem on almost every Spry menu I’ve run into: breaks horribly in IE.

I never knew that it was nothing more than the left: auto bug. The two times I was asked to fix a Spry menu, I’ve always chucked it and wrote a regular menu.

Meh, Magento has similar-sounding classnames. Bleh. BLehblargh ew bleeeh. I usually look for the <!–begin template–> stuff and the MM_swap junk : )

Second thing I never liked about Spry was how it did not work for me (no JS). You can always throw Blake Haswell’s JS on a CSS menu to get the fancy hovering effects if Spry : )