hnaba1981 0 Newbie Poster

I'm trying to get the submenu to have the text left aligned when you hover over it but now it centers. Not sure why. I'd also like for the drop down to be slightly to the right of the parent menu. I'm using the spry css and one that I made specifically for the page. Below is the spry code, any help would be great!

@charset "UTF-8";

/* SpryMenuBarHorizontal.css - Revision: Spry Preview Release 1.4 */

/* 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 auto;
	padding: 0;
	list-style-type: none;
	font-size: 100%;
	cursor: default;
	width: auto;
	width: 38 em;
}
/* Set the active Menu Bar with this class, currently setting z-index to accomodate IE rendering bug:  */
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: 100%;
	position: relative;
	text-align: left;
	cursor: pointer;
	width: 8em;
	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: 10em;
	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: 17em;
}
/* Submenus should appear slightly overlapping to the right (95%) and up (-5%) */
ul.MenuBarHorizontal ul ul
{
	position: absolute;
	margin: -5% 0 0 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: none;
	background-color: #1D325F;
}
/* Menu items are a light gray block with padding and no text decoration */
ul.MenuBarHorizontal a
{
	display: block;
	cursor: pointer;
	background-color: none;
	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.MenuBarHorizontal a:hover, ul.MenuBarHorizontal a:focus
{
	font-family: Arial, Helvetica, sans-serif;
	font-size: 16px;
	color: #b5985a;
	text-decoration: underline;
	text-align: center;
	font-weight: bold;
}
/* Menu items that are open with submenus are set to MenuBarItemHover with a blue background and white text */
ul.MenuBarHorizontal a.MenuBarItemHover, 
{
	font-family: Arial, Helvetica, sans-serif;
	font-size: 16px;
	color: #b5985a;
	text-decoration: underline;
	text-align: center;
	font-weight: bold;
}
ul.MenuBarHorizontal a.MenuBarItemSubmenuHover, ul.MenuBarHorizontal a.MenuBarSubmenuVisible
{
	font-family: Arial, Helvetica, sans-serif;
	font-size: 16px;
	color: #b5985a;
	text-decoration: underline;
	text-align: left;
	font-weight: bold;
}
/*******************************************************************************

 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%;
}
/* 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;
}
/* 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

For : the symptom (submenu text centering on hover) is almost always caused by a broad :hover rule that applies to all anchors, plus a small CSS parsing/ordering issue that prevents the more specific submenu rule from winning. Quick checks: inspect the hovered submenu anchor in the browser devtools and look at the Computed/Styles panel to see which rule sets text-align; if a rule is crossed out it’s being overridden. A refresher on how selector specificity and cascade decide which rule wins is here: CSS Specificity (MDN).

Two safe fixes (add to your stylesheet after Spry rules):

/* keep only top-level items centered on hover */
ul.MenuBarHorizontal > li > a:hover,
ul.MenuBarHorizontal > li > a:focus {
  text-align: center;
}

/* force every submenu link to be left-aligned */
ul.MenuBarHorizontal ul a,
ul.MenuBarHorizontal ul a:hover,
ul.MenuBarHorizontal ul a:focus {
  text-align: left;
}

To nudge a submenu a few pixels to the right of its parent, override the submenu-visible rule and tweak left (or use transform if preferred):

ul.MenuBarHorizontal ul.MenuBarSubmenuVisible {
  left: 6px;   /* adjust value to taste */
  top: 100%;   /* ensure it drops below parent */
}

Also fix the stray trailing comma in the stylesheet (a selector followed by a comma with no following selector makes the whole rule block invalid). After changes, verify in devtools that the submenu anchor shows text-align: left under the active rule. For background on the property itself, see text-align (MDN). Consider simplifying away from Spry (it’s deprecated) and using plain CSS for easier maintenance.

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.