Hi Dani Web Community,

I'm having trouble with the spry menu bar in CS3. My first problem is occuring in Safari, Firefox, Opera and IE. There is a horizontal scroll bar at the bottom of the page and if you scroll to the right there is a secondary sub menu appearing. As far as the actual Menu and Submenus those function correctly.

The second problem is only occurring in IE. The submenus on the home page are dropping down behind the flash element. Can this be fixed with out having to drop the flash into an iframe on a separate page?

Any suggestions are greatly appreciated!!

Here is the link to the webpage: http://www.nightskymultimedia.com/clients/sbgraphix/Ross/

Here is the CSS for the spry bar:

@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: 600px;
}
/* Set the active Menu Bar with this class, currently setting z-index to accomodate IE rendering bug: [url] */
ul.MenuBarActive
{
	z-index: 900;
}
/* 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: 100%;
	position: relative;
	text-align: left;
	cursor: pointer;
	width: auto;
	float: left;
}
/* 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: 7em;
	position: absolute;
	left: 1000em;
}
/* 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;
}
/* Menu item containers are same fixed width as parent */
ul.MenuBarHorizontal ul li
{
	width: 14em;
}
/* Submenus should appear slightly overlapping to the right (95%) and up (-5%) */
ul.MenuBarHorizontal ul ul
{
	position: absolute;
	margin: 0;
}
/* 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;
}
/* Menu items are a light gray block with padding and no text decoration */
ul.MenuBarHorizontal a
{
	display: block;
	cursor: pointer;
	background-color: #053468;
	padding: 0.20em 1.75em;
	color: #FFFFFF;
	text-decoration: none;
	font-family: Tahoma;
	font-size: 11px;
}
/* Menu items that have mouse over or focus have a blue background and white text */
ul.MenuBarHorizontal a:hover, ul.MenuBarHorizontal a:focus
{
	background-color: #6699CC;
	color: #FFF;
}
/* 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
{
	background-color: #6699CC;
	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.MenuBarHorizontal a.MenuBarItemSubmenu
{
	background-image: url(SpryMenuBarDown.gif);
	background-repeat: no-repeat;
	background-position: 95% 50%;
	visibility: visible;
}
/* 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-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.MenuBarHorizontal a.MenuBarItemSubmenuHover
{
	background-image: url(SpryMenuBarDownHover.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.MenuBarHorizontal ul 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.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: #FFF;
	}
}

Dani AI

Generated

Short explanation: the extra submenu you see when scrolling right is almost always caused by how Spry hides submenus — it pushes them far offscreen to the right so they can be shown later. Some browsers treat that offscreen area as part of the page width, producing a horizontal scrollbar and revealing the “hidden” menu when you scroll. already fixed the Flash overlap, and ’s Submenu Tree note is useful for structure, but the visual-duplication is a purely CSS/layout issue.

Quick, low-risk fixes to try (in order):

  • Replace the “push to the right” hiding with a negative offset so the submenu sits off the left edge instead of extending the page:

    ul.MenuBarHorizontal ul {
      left: -9999px;
    }
  • If you cannot change the Spry stylesheet, contain the menu in a wrapper or the page body and hide horizontal overflow (caution: this will hide any genuine horizontal content):

    body { overflow-x: hidden; }

More robust alternatives:

  • Use a hide/show technique that does not expand layout (modern): hide with transform (no scrollbar side effects) and reveal by removing the transform. Example (progressive enhancement — older browsers will need a fallback):

    ul.MenuBarHorizontal ul { transform: translateX(-9999px); }
    ul.MenuBarHorizontal ul.MenuBarSubmenuVisible { transform: none; }
  • Or change the Spry show/hide to toggle display or visibility (requires editing the Spry show/hide calls).

Quick debugging checklist:

  • Use browser devtools to compare document.scrollWidth vs viewport width to locate the element causing the extra width.
  • Temporarily apply outline: 2px dashed red on suspected elements to spot the overflow.
  • After changes, test in the affected browsers and resize windows to confirm the scrollbar is gone.

Note about Flash (since it was raised): the proper long-term fix is to set the Flash wmode parameter to opaque or transparent (in both param and embed) so HTML menus can stack above Flash; be aware wmode can affect Flash performance.

I finally found information on the drop down menu and the flash. So that is fixed but I'm still in the market for information pertaining to the secondary submenu on the far right side of the page.

Thanks!!

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.